1
votes

Comment fusionner des colonnes dans SQL de la même table

J'ai deux colonnes de date. Parfois, ils ont tous les deux des dates (qui seront toujours les mêmes dans les deux colonnes) et parfois l'une est vide et l'autre a une valeur de date. Donc, au lieu de deux colonnes, j'essaie d'en obtenir une. Si l'un d'entre eux est vide, il prendra la valeur de date d'une autre colonne et si les deux ont des valeurs (qui seront toujours les mêmes), il prendra n'importe laquelle des valeurs des deux colonnes.

J'ai essayé les commandes UNION mais cela ne me donne pas le résultat souhaité.

 entrez la description de l'image ici


2 commentaires

Comment utiliser une instruction CASE dans votre requête


Je ne voulais pas copier les images dans votre question, Talha. Je voulais dire mettre la déclaration Create Table dans votre question sous forme de texte . De cette façon, les personnes qui vous aident ici n'ont pas à transcrire le code - elles peuvent simplement le copier / coller. Voir Comment demander et exemple reproductible minimal pour plus de détails.


5 Réponses :


1
votes

Bienvenue dans Stack Overflow!

Vous avez besoin de Coalesce

De plus, à l'avenir, vous devriez insérer des exemples de données et de métadonnées dans le texte de votre question, plutôt que sous forme de pièces jointes.


1 commentaires

Merci. c'est quelque chose que je cherchais



0
votes

Vous pouvez utiliser l'instruction ISNULL s'il s'agit de SQL

SELECT  ISNULL(ReturnDate,RepartureDate) as dateAct FROM AviationReservation_dev


0 commentaires

0
votes
UPDATE tableName
SET Date1Column = ISNULL(Date1Column, Date2Column);
Context: ISNULL ( check_expression , replacement_value ), if first argument is not null, it will use that argument.After the update, delete the other column.

0 commentaires

2
votes

SQL Server propose plusieurs options pour ce scénario. Vous pouvez utiliser COALESCE , ISNULL , ou un instruction CASE .

Sur la base des informations que vous avez fournies, j'utiliserais COALESCE. Il offre plusieurs avantages par rapport à ISNULL et est très simple à mettre en œuvre. Une déclaration CASE semble exagérée pour ce que vous essayez de faire. Consultez le lien ci-dessus pour plus d'informations sur chaque solution.


2 commentaires

Exemple: SELECT col1, col2, ..., COALESCE (date1, date2) AS date FROM nomtable


Merci. c'est quelque chose que je cherchais



0
votes

Il semble qu'il n'y ait aucun cas pour que les deux colonnes soient vides, alors dans de telles conditions, vous pouvez faire quelque chose comme ceci:

 SELECT
       CASE
              WHEN column1 IS NULL THEN column2
              WHEN column2 IS NULL THEN column1
              ELSE column1 orcolumn2 


1 commentaires

Merci. c'est quelque chose que je cherchais