1

SQL Server を使用してこの特定のピボット テーブルを作成する必要がありますが、機能しません。

私が持っているもの:

id   name          was_clicked        times
 1   CustomerA               0          654
 1   CustomerA               1           24 
 1   CustomerB               0          121
 1   CustomerB               1           12
 1   CustomerC               0         1203
 1   CustomerC               1           67

私が欲しいもの:

id   name          views      clicks
 1   CustomerA       654          24
 1   CustomerB       121          12
 1   CustomerC      1203          67

出来ますか?

ありがとうございました。

4

2 に答える 2

1

PIVOTあなたが求めることができるのと同じくらい基本的な例:

declare @t table (id int, name varchar(10),was_clicked bit,times int)
insert into @t(id,   name,          was_clicked,        times) values
( 1   ,'CustomerA',               0,          654  ),
( 1   ,'CustomerA',               1,           24  ),
( 1   ,'CustomerB',               0,          121  ),
( 1   ,'CustomerB',               1,           12  ),
( 1   ,'CustomerC',               0,         1203  ),
( 1   ,'CustomerC',               1,           67  )

select
    id,
    name,
    [0] as views,
    [1] as clicks
from @t t pivot (MAX(times) for was_clicked in ([0],[1])) as pt

結果セットの同じ列と行の位置になる複数の一致する行が存在する可能性があるため、常に式に集計を含める必要があります。たまたま 1 つだけが可能であることがわかっている場合、 と のどちらを選択するかはやや恣意的です。PIVOTMINMAXSUM

orは数値以外の型にも適用できるため、デフォルトでMINorを使用する傾向があります。MAX

于 2013-06-24T14:34:21.510 に答える