7
select out.a,out.b from out
pivot (count([event]) for [date] in ([Mon],[Tues])) as event_count
group by out.a,out.b

在执行此查询时,我收到以下错误:

多部分标识符 out.a,out.b 无法绑定

4

3 回答 3

8

删除GROUP BY子句和out列的别名,a如下b所示:

select a, b, [Mon], [Tues] 
from out
pivot 
(
  count([event]) 
  for [date] in ([Mon],[Tues])
) as event_count;

SQL 小提琴演示

请注意:使用PIVOT表运算符时,您不需要显式指定分组元素,在您的情况a, b或源表中,您需要将其从查询和源表中删除。运算符将PIVOT自动计算出您想要的列GROUP BY,这些列是在您的情况下未在 thedate或聚合元素中指定event的列,其余列将是分组列。

这就是为什么您必须明确列出列名而不是 的原因FROM out,以防表out包含除 之外的列a, b, date, event。在这种情况下,您必须这样做:

select a, b, [Mon], [Tues] 
from
(
   SELECT a, b, "date", "event" 
   FROM out
) t
pivot 
(
  count([event]) 
  for [date] in ([Mon],[Tues])
) as event_count;
于 2012-12-13T06:02:06.260 回答
3

听起来您需要在 [Mon] 上替换 out.a 并在 [Tues] 上替换 out.b

SELECT [Mon], [Tues]
FROM out
PIVOT (
       COUNT([event]) FOR [date] in ([Mon],[Tues])
       ) AS event_count

SQLFiddle上的演示

于 2012-12-14T07:39:35.743 回答
1

我不确定您的查询,但可能这就是您要查找的内容

Select a,b, [Mon],[Tues] from 
(
  Select a,b,date,event from out 
  group by a,b,date,event
)L
PIVOT
(
  count(event) for [date] in ([Mon],[Tues]) 
)  event_count
于 2012-12-13T06:18:22.353 回答