我的表只有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的新手
答案 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
<强>输出:强>
在这里演示:
答案 1 :(得分:1)
使用min/max
聚合函数
select Id,min(Date),
case when min(Date)<>max(Date) then max(Date) end
From yourtable
Group by Id
如果这对您的原始数据没有帮助,那么改变样本数据和预期结果