具有分组依据的数据透视表
Posted
技术标签:
【中文标题】具有分组依据的数据透视表【英文标题】:Pivot Table with group by 【发布时间】:2012-12-13 06:00:44 【问题描述】: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
【问题讨论】:
【参考方案1】:删除GROUP BY
子句,以及a
和b
列的别名out
,如下所示:
select a, b, [Mon], [Tues]
from out
pivot
(
count([event])
for [date] in ([Mon],[Tues])
) as event_count;
SQL Fiddle Demo
注意:当使用PIVOT
表操作符时,你不需要显式指定分组元素,在你的情况a, b
或源表中,你需要删除它从查询和源表。 PIVOT
运算符将自动计算出您想要 GROUP BY
的列,这些列是在您的情况下未在 date
或聚合元素 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;
【讨论】:
【参考方案2】:听起来您需要在 [Mon] 上替换 out.a,在 [Tues] 上替换 out.b
SELECT [Mon], [Tues]
FROM out
PIVOT (
COUNT([event]) FOR [date] in ([Mon],[Tues])
) AS event_count
SQLFiddle上的演示
【讨论】:
【参考方案3】:我不确定您的查询,但可能这就是您要查找的内容
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
【讨论】:
以上是关于具有分组依据的数据透视表的主要内容,如果未能解决你的问题,请参考以下文章