use*_*r87 7 sql sql-server pivot sql-server-2008
select out.a,out.b from out
pivot (count([event]) for [date] in ([Mon],[Tues])) as event_count
group by out.a,out.b
Run Code Online (Sandbox Code Playgroud)
执行此查询时,我收到以下错误:
多部分标识符out.a,out.b无法绑定
取出GROUP BY子句和别名out列a和b像这样:
select a, b, [Mon], [Tues]
from out
pivot
(
count([event])
for [date] in ([Mon],[Tues])
) as event_count;
Run Code Online (Sandbox Code Playgroud)
请注意:使用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;
Run Code Online (Sandbox Code Playgroud)