【发布时间】:2018-09-18 14:37:21
【问题描述】:
我有行:
PLACE DATE_OPEN SUM
-----------------------
PLACE1 03.09.2018 2
PLACE2 03.09.2018 2
PLACE1 04.09.2018 8
PLACE1 05.09.2018 9
PLACE2 05.09.2018 1
我使用此 SQL 查询获取行:
SELECT
SB AS [PLACE],
CAST(OPEN_TIME AS DATE) AS [DATE_OPEN],
COUNT(ID) AS [SUM]
FROM
[Table]
WHERE
SB IN ('PLACE1', 'PLACE2')
GROUP BY
SB, CAST(OPEN_TIME AS DATE)
我想得到一个汇总表形式的表,用SQL可以做到吗?
所需输出的示例:
PLACE DATE_OPEN
03.09.2018 04.09.2018 05.09.2018
PLACE1 2 8 9
PLACE2 2 1
【问题讨论】:
-
谷歌:“SQL Server 动态 SQL”。
-
这似乎是报告数据。在 SSRS 中使用矩阵。但我建议切换行和列,这样你就有一个已知的宽度和无限的行。
-
你应该不调用一个列
SUM- 特别是如果它包含一个计数 ......首先,@987654325 @ 是保留的 T-SQL 关键字,“重复使用”这些非常通用的名称总是一个坏主意 - 使用 更具表现力,在您的情况下更有用的东西。并且调用包含 countSUM的列违反了最小意外原则 - 要么是总和,要么是计数 - 但不要混淆这些含义 -这将使您的代码更难理解和维护!
标签: sql sql-server sql-server-2008 sql-server-2012