私はフィドルの例からクロスタブビューを作成していました。基本的に、 、 、 のテーブルを受け取りCustomers
ましVendors
たProduct Type
。ベンダーが行で、列が製品タイプ別の総売上であるビューを生成したいと考えています。
構造は
CustomerID Vendor ProductType
--------------------------------
1 A Type1
2 A Type2
3 B Type1
4 A Type2
私が望む最終結果は次のとおりです。
Vendor Type1 Type2
---------------------
A 1 2
B 1 0
/* Count the number of sales by Product Type for each Vendor. */
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(ProductType)
from MyTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Vendor,' + @cols + '
from MyTable
pivot
(
count (ProductType)
for ProductType in (' + @cols + ')
) p
ORDER BY Vendor ASC'
execute(@query)
最終結果は、集計されたカウントを含む単一の行ではなく、ベンダーごとに複数の行になります。
例えば
Vendor Type1 Type2
---------------------
A 1 0
A 0 1
B 1 0
A 0 1
このクエリで見逃した可能性があることについて、誰かが洞察を持っていますか?
ありがとう。