【发布时间】:2017-02-03 12:21:18
【问题描述】:
假设我有这两张桌子:
ID Time UserId
1 08:00 55
2 08:00 22
3 08:00 04
4 09:00 17
5 11:00 11
...etc...
UserId Name
01 Brian
02 Francis
03 David
...etc...
我想要的结果是:
Hours(distinct) Name
08:00 Franck,Michelle,Damian
09:00 Indiana, Robert
事实上,我希望所有不同的时间都列在第一列中,并且所有用户的名称都列在一行中。我试过这个查询:
SELECT distinct convert (varchar(25),Time ,120) ,test = STUFF (( SELECT ',' + Name From T2 WHERE T1.UserId=T2.Id FOR XML PATH('')), 1,1,'') 从 T1 组按时间
查询在没有 group by 的情况下工作,但它会触发错误“列 'UserId' 在选择列表中无效,因为它既不包含在聚合函数或 GROUP BY 子句中。”
有什么想法吗?
【问题讨论】:
-
去掉
group BY Time部分。 -
如果我去掉 group by ,每行只有一个名字...
标签: sql sql-server group-by