Estou tentando aprender como funciona esse pivô. Acho que não estou entendendo direito. Eu só quero fazer uma contagem simples para vários tipos de itens que têm alguns status. A tabela na qual estou trabalhando tem colunas: [Status], [ItemType] e várias outras.
Aqui está o que estou fazendo atualmente
SELECT [NEW]
,[IN]
,[OUT]
,READY = [READY FOR DISPOSAL]
,TRANSIT = [IN ROUTE TO DISPOSAL]
,[DISPOSED]
,[TYPE] = [ItemType]
FROM [EVAULTTEST].[dbo].[Items] AS ei
PIVOT(
COUNT([Status])
FOR [Status] IN ([NEW], [IN], [DISPOSED]
, [IN ROUTE TO DISPOSAL], [OUT], [READY FOR DISPOSAL])
) AS piv
E o resultado
1 0 0 0 0 0 FIREARMS
0 1 0 0 0 0 FIREARMS
1 0 0 0 0 0 FIREARMS
0 1 0 0 0 0 FIREARMS
1 0 0 0 0 0 MONEY
1 0 0 0 0 0 Automobiles
0 1 0 0 0 0 Aircraft
1 0 0 0 0 0 Automobiles
1 0 0 0 0 0 Automobiles
1 0 0 0 0 0 ALCOHOL
0 0 1 0 0 0 MONEY
0 0 1 0 0 0 AUTOMOBILES
0 0 1 0 0 0 AUTOMOBILES
Por que eles não colapsam em algo assim:
2 0 0 0 0 0 FIREARMS
0 2 0 0 0 0 FIREARMS
1 0 0 0 0 0 MONEY
3 0 0 0 0 0 Automobiles
0 1 0 0 0 0 Aircraft
1 0 0 0 0 0 ALCOHOL
0 0 1 0 0 0 MONEY
0 0 2 0 0 0 AUTOMOBILES
Está ficando chateado com suas outras colunas. Então tente:
... e isso ocorre porque o agrupamento implícito está em qualquer coluna que não esteja na cláusula PIVOT. Portanto, remover as colunas extras na primeira parte da consulta deve corrigi-lo.