2列,具有相同的ID到1行

时间:2017-08-09 04:12:12

标签: sql

我的表只有2列,如下所示

|ID  | Date       |
===================
|1   | 03/04/2017 |
|1   | 09/07/1997 |
|2   | 04/04/2014 |

我希望获得最终结果,如下所示

|ID  | Date 1     |Date 2      |
================================
|1   | 03/04/2017 | 09/07/1997 |
|2   | 04/04/2014 | NULL       |

我正在阅读PIVOT功能,我不确定我是否在正确的轨道上。我还是SQL的新手

2 个答案:

答案 0 :(得分:2)

一个简单的透视查询应该在这里工作,有一个扭曲。对于您的ID 2数据,只有一行,但在这种情况下,您要报告第一个日期和NULL秒日期。我们可以使用CASE表达式来处理这种情况。

SELECT
    ID,
    MAX(Date) AS date_1,
    CASE WHEN COUNT(*) = 2 THEN MIN(Date) ELSE NULL END AS date_2
FROM yourTable
GROUP BY ID

<强>输出:

enter image description here

在这里演示:

Rextester

答案 1 :(得分:1)

使用min/max聚合函数

可以轻松完成此操作
select Id,min(Date),
        case when min(Date)<>max(Date) then max(Date) end
From yourtable 
Group by Id

如果这对您的原始数据没有帮助,那么改变样本数据和预期结果