如何合并同一表的SQL中的列

时间:2019-04-01 16:34:19

标签: sql-server

我有两个日期列。 有时它们都有日期(两列中总是相同),有时一个为空,一个具有日期值。 因此,我正在尝试获得一列而不是两列。 如果一个为空,它将从另一列获取日期值;如果两个都具有值(始终相同),则将仅从两列中获取任何值。

我尝试了UNION命令,但是没有给我想要的结果。

enter image description here

6 个答案:

答案 0 :(得分:2)

欢迎堆栈溢出!

您需要Coalesce

此外,将来,您应该将示例数据和元数据放在问题中的文本中,而不应作为附件。

答案 1 :(得分:2)

在这种情况下,SQL Server有两个不同的选项。您可以使用COALESCEISNULLCASE语句。

根据您提供的信息,我将使用COALESCE。与ISNULL相比,它具有多个优点,并且实现起来非常简单。对于您要执行的操作,CASE语句似乎过大了。请查看上面的链接,以获取有关每种解决方案的更多信息。

答案 2 :(得分:0)

如果是SQL,则可以使用ISNULL语句

SELECT  ISNULL(ReturnDate,RepartureDate) as dateAct FROM AviationReservation_dev

答案 3 :(得分:0)

尝试案例说明:

select 
case when column1 is null then column2
     when column2 is null then column1
     else column1
end as merged_column
from original_table

答案 4 :(得分:0)

UPDATE tableName
SET Date1Column = ISNULL(Date1Column, Date2Column);

上下文:ISNULL ( check_expression , replacement_value ),如果第一个参数不为null,它将使用该参数。

更新后,删除另一列。

答案 5 :(得分:0)

似乎两列都不为空,那么在这种情况下,您可以执行以下操作:

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