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のエイリアスを削除し、次のようにします。outab

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の列は、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;
于 2012-12-13T06:02:06.260 に答える
3

[月] に out.a を、[火] に 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 に答える