【发布时间】:2012-04-24 13:25:11
【问题描述】:
我有一张这样的“预订”桌子:
booking_id,
date,
client,
sponsor
我正在尝试获取每月摘要:
SELECT
MONTH(date) AS M,
Sponsor,
Client,
COUNT(booking_id) AS c
FROM booking
GROUP BY
M, Sponsor, Client
现在我想查看客户在哪个日期进行了预订。我尝试使用 STUFF()(在这篇文章中引用:Simulating group_concat MySQL function in Microsoft SQL Server 2005?),但它与 group-by 语句冲突。
根据请求采样数据。目前我有以下内容:
M Sponsor Client c
March AB y 3
March FE x 4
April AB x 2
期望的输出:
M Sponsor Client c dates
March AB y 3 12, 15, 18
March FE x 4 16, 19, 20, 21
April AB x 2 4, 8
其中的数字是天数(例如 3 月 12 日、3 月 15 日、3 月 18 日)。在 mysql 中,我会使用 group_concat(date) 来获取最后一列。
非常感谢答案:-)
【问题讨论】:
-
除了显示您当前正在运行的查询之外,您能否显示一些示例数据和所需的结果?单词问题和对现有查询进行逆向工程都是有趣的练习,但是将整个问题可视化可能会带来更好的解决方案。
-
@Lennart - 好的,但是你想要的输出是什么?
-
@Lamak:列在“所需”下。我正在努力获得最后一列,日期。在 mysql 中你会使用 group_concat 但在 t-sql 中没有这样的东西。
-
抱歉有点不清楚。
-
12、15、18从何而来?有没有你不包括的样本数据?当我们要求提供样本数据时,我们并不是指您每月汇总查询的结果。预订表中实际有什么(只是有助于所需输出的行)?
标签: sql-server sql-server-2008 tsql group-by