【发布时间】:2020-08-26 11:50:00
【问题描述】:
我正在使用 SQL Server,并使用 SMSS 进行查询。我不是一个全职的 SQL 用户,我正在尝试为我们的工作人员制作一些仪表板,使用 SQL 作为数据收集器,并使用下面的查询。
查询几乎可以正常工作,但我需要将所有结果放入成对的行中,而不是显示空值。这是我写的查询:
SELECT convert(varchar(11), start_time, 103) AS Date, DATENAME(weekday, start_time) AS Week_Day,
CASE WHEN CAST(start_time AS time) = '05:00:00'
THEN name
END AS 'Morning',
CASE WHEN CAST(start_time AS time) ='12:59:59'
THEN name
END AS 'Afternoon',
CASE WHEN CAST(start_time AS time) = '20:59:59'
THEN name
END AS 'Evening'
FROM [somedb].[dbo].[tb_some_table]
WHERE [start_time] >= dateadd(day, 2-datepart(dw, getdate()), CONVERT(date,getdate()))
AND [start_time] < dateadd(day, 9-datepart(dw, getdate()), CONVERT(date,getdate()))
这给了我这样的结果:
Date Week_Day Morning Afternoon Evening
24/08/2020 Monday Fred NULL NULL
24/08/2020 Monday Markus NULL NULL
24/08/2020 Monday NULL Chuck NULL
24/08/2020 Monday NULL Bill NULL
24/08/2020 Monday NULL NULL John
24/08/2020 Monday NULL NULL Wayne
但是,我想得到这个:
Date Week_Day Morning Afternoon Evening
24/08/2020 Monday Fred Chuck John
24/08/2020 Monday Markus Bill Wayne
谁能帮帮我? :/
编辑:数据如下所示:
如果我运行一个选择,数据看起来像这样:
start_time end_time name
2020-08-24 05:00:00.000 2020-08-24 12:59:59.000 Frank
2020-08-24 05:00:00.000 2020-08-24 12:59:59.000 Markus
2020-08-24 12:59:59.000 2020-08-24 20:59:59.000 Chuck
2020-08-24 12:59:59.000 2020-08-24 20:59:59.000 Bill
2020-08-24 20:59:59.000 2020-08-25 05:00:00.000 John
2020-08-24 20:59:59.000 2020-08-25 05:00:00.000 Wayne
【问题讨论】:
-
Fred 与 Chuck 和 John 以及 Markus 与 Bill 和 Wayne 有什么关系?例如,为什么不是 Fred、Bill 和 John?
-
另外,您的数据在您不想要的结果之前是什么样子的?
-
嗨,Frank 和 Markus 周一早上一起工作,Chuck 和 Bill 周一下午一起工作,Jpn 和 Wayne 周一晚上一起工作。
-
这与 Fred 和 Chuck 之间的关系有什么关系?他们在同一排,为什么他们在一起?正如我所问的,为什么不是 Fred 和 Bill?
-
Edit 你的问题,不要在 cmets 中转储。
标签: sql sql-server smss