Sql server SQl Server-2个具有不同值的相等列
我有这张桌子:Sql server SQl Server-2个具有不同值的相等列,sql-server,Sql Server,我有这张桌子: ID | Status | Date ----+----------+-------------- 1 | 1 | 01-01-2017 2 | 1 | 26-04-2016 2 | 4 | 20-10-2016 3 | 1 | 05-11-2015 3 | 2 | 20-03-2016 4 | 4 | 06-06
ID | Status | Date
----+----------+--------------
1 | 1 | 01-01-2017
2 | 1 | 26-04-2016
2 | 4 | 20-10-2016
3 | 1 | 05-11-2015
3 | 2 | 20-03-2016
4 | 4 | 06-06-2015
5 | 1 | 10-04-2017
5 | 3 | 21-12-2016
5 | 2 | 25-02-2013
5 | 4 | 11-03-2014
我想要的结果是:
ID | Status1 | Status2 | Status3 | Status4 | Date
----+----------+----------+----------+----------+------------
1 | 1 | | | | 01 01 2017
2 | 1 | | | | 26 04 2016
2 | | | | 4 | 20 10 2016
3 | 1 | | | | 05 11 2015
3 | | 2 | | | 20 03 2016
4 | | | | 4 | 06 06 2015
5 | 1 | | | | 10 04 2017
5 | | | 3 | | 21 12 2016
5 | | 2 | | | 25 02 2013
5 | | | | 4 | 11 03 2014
如何进行查询?您可以使用
CASE
语句来实现这一点。请注意,我将日期重命名为sdate,因为日期是一个
如果我们使用Group By,则不需要临时/永久表。看到我的答案了吗?对不起,我不知道你的意思?您是指
CREATE
table语句吗?用户可以在sqlfiddle或rextester上试用。此外,我不明白为什么需要分组依据或任何聚合?哎呀,你说得对,是的,我现在看到我的错误了。删除了我的答案。欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮({}
),以很好地格式化和语法突出显示它!
CREATE TABLE myTable (id INT, status INT, [sdate] date)
INSERT INTO myTable VALUES (1, 1, '01-01-2017')
,(2, 1, '04-26-2017')
,(2, 4, '10-20-2016')
SELECT id
,CASE WHEN status = 1 then status else NULL end as status1
,CASE WHEN status = 2 then status else NULL end as status2
,CASE WHEN status = 3 then status else NULL end as status3
,CASE WHEN status = 4 then status else NULL end as status4
,sdate
FROM myTable