我有一个“事件”表,每个事件都有一个1-4(基本上是变量#)“用户”的列表。所以,假设我今天收到所有事件,然后我想将用户列为动态列数,而不是重复行。
现在我有
SELECT E.EventID, E.Time, U.Name FROM Events
INNER JOIN Users U ON E.UserID = U.UserID
WHERE Date = '12/20/2010'
这给我带来了如下结果:
EventID, Time, Name
211, '4:00am', 'Joe'
211, '4:00am', 'Phil'
211, "4:00am', 'Billy'
218, '7:00am', 'Sally'
218, '7:00am', 'Susan'
我可以使用它并且它是可以接受的,但是对于EventID和Time的重复(我的实际查询中有更多列)对我来说似乎很浪费。我在输出中真正想要的是:
EventID, Time, Name1, Name2, Name3
211, '4:00am', 'Joe', 'Phil', 'Billy'
218, '7:00am', 'Sally', 'Susan', NULL
我已经尝试过查看PIVOTs的教程(我有SQL 2008),但我不知道它们在概念上是否符合我的目标。他们中的大多数都使用“MIN”或“MAX”。
也许这不可能做到?我的另一种选择是获取今天的事件列表,然后循环查看,找到该事件的用户记录集。我宁愿在一个查询中抓住它。
有什么想法吗?
答案 0 :(得分:2)
在代码中返回可变数量的列将更难处理。您当前获得的结果集很容易转换为您可以在代码中使用的对象。
你想对输出做什么?