Estou tendo problemas para criar uma tabela dinâmica que segue o esquema descrito abaixo. Por exemplo, com a tabela a seguir (nem todos os registros são mostrados aqui):
Rota | Bus_Fare_Payment_Method | Total_Annual_Household_Income |
---|---|---|
Rota 1 | 10-Passagem | US$ 15 mil a US$ 19 mil |
Rota 1 | 10-Passagem | US$ 15 mil a US$ 19 mil |
Rota 1 | 10-Passagem | US$ 25 mil a US$ 29 mil |
Rota 1 | 10-Passagem | US$ 60 mil ou mais |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 1 | Tarifa em dinheiro normal | Abaixo de US$ 10 mil |
Rota 10 | 10-Passagem | US$ 30 mil a US$ 39 mil |
Rota 10 | Adulto de 31 dias | US$ 10 mil a US$ 14 mil |
Rota 10 | Adulto de 31 dias | US$ 10 mil a US$ 14 mil |
Rota 10 | Adulto de 31 dias | US$ 10 mil a US$ 14 mil |
Rota 10 | Adulto de 31 dias | US$ 10 mil a US$ 14 mil |
Rota 10 | Adulto de 31 dias | US$ 15 mil a US$ 19 mil |
Rota 10 | Adulto de 31 dias | US$ 20 mil a US$ 24 mil |
Rota 10 | Adulto de 31 dias | US$ 20 mil a US$ 24 mil |
Rota 10 | Adulto de 31 dias | US$ 20 mil a US$ 24 mil |
Rota 10 | Adulto de 31 dias | US$ 20 mil a US$ 24 mil |
Rota 101 | Passe de dia inteiro reduzido | Abaixo de US$ 10 mil |
Rota 101 | Outro | Abaixo de US$ 10 mil |
Rota 101 | Tarifa reduzida | US$ 10 mil a US$ 14 mil |
Rota 101 | Tarifa reduzida | US$ 25 mil a US$ 29 mil |
Rota 101 | Tarifa reduzida | US$ 30 mil a US$ 39 mil |
Rota 101 | Tarifa reduzida | US$ 40 mil a US$ 49 mil |
Rota 101 | Tarifa reduzida | US$ 60 mil ou mais |
Rota 101 | Tarifa reduzida | US$ 60 mil ou mais |
Rota 101 | Tarifa reduzida | US$ 60 mil ou mais |
Rota 101 | Tarifa reduzida | Abaixo de US$ 10 mil |
Rota 101 | Tarifa reduzida | Abaixo de US$ 10 mil |
Rota 101 | Tarifa reduzida | Abaixo de US$ 10 mil |
Rota 101 | Tarifa em dinheiro normal | US$ 10 mil a US$ 14 mil |
Rota 101 | Tarifa em dinheiro normal | US$ 10 mil a US$ 14 mil |
Rota 101 | Tarifa em dinheiro normal | US$ 10 mil a US$ 14 mil |
Rota 101 | Tarifa em dinheiro normal | US$ 10 mil a US$ 14 mil |
Gostaria de produzir a seguinte tabela:
Rota | Bus_Fare_Payment_Method | US$ 10 mil a US$ 14 mil | US$ 15 mil a US$ 19 mil | US$ 20 mil a US$ 24 mil | US$ 25 mil a US$ 29 mil | US$ 30 mil a US$ 39 mil | US$ 40 mil a US$ 49 mil | US$ 60 mil ou mais | Abaixo de US$ 10 mil |
---|---|---|---|---|---|---|---|---|---|
Rota 1 | 10-Passagem | 2 | 1 | 1 | |||||
Rota 1 | Adulto de 31 dias | ||||||||
Rota 1 | Passe de dia inteiro reduzido | ||||||||
Rota 1 | Outro | ||||||||
Rota 1 | Tarifa reduzida | ||||||||
Rota 1 | Tarifa em dinheiro normal | 8 | |||||||
Rota 10 | 10-Passagem | 1 | |||||||
Rota 10 | Adulto de 31 dias | 4 | 1 | 4 | |||||
Rota 10 | Passe de dia inteiro reduzido | ||||||||
Rota 10 | Outro | ||||||||
Rota 10 | Tarifa reduzida | ||||||||
Rota 10 | Tarifa em dinheiro normal | ||||||||
Rota 101 | 10-Passagem | ||||||||
Rota 101 | Adulto de 31 dias | ||||||||
Rota 101 | Passe de dia inteiro reduzido | 1 | |||||||
Rota 101 | Outro | 1 | |||||||
Rota 101 | Tarifa reduzida | 1 | 1 | 1 | 1 | 3 | 3 | ||
Rota 101 | Tarifa em dinheiro normal | 4 |
Consigo criar a tabela a seguir com a consulta incluída abaixo, mas estou faltando o campo Route que preciso como parte da minha saída (como mostrado acima).
SELECT [Bus_Fare_Payment_Method] "Bus Fare Payment Method", [Under $10k] 'Under $10k', [$10K to $14K] '$10K to $14K',[$15k to $19k] '$15k to $19k', [$20k to $24k] '$20k to $24k', [$25k to $29k] '$25k to $29k', [$30k to $39k] '$30k to $39k', [$40k to $49k] '$40k to $49k', [$50k to $59k] '$50k to $59k', [$60k or more] '$60k or more'
FROM
(SELECT [Route], [Total_Annual_Household_Income], [Bus_Fare_Payment_Method]
FROM [BCT_TDP_SURVEY_2018] where [Bus_Fare_Payment_Method] != '' ) p
PIVOT
(
COUNT ([Route])
FOR [Total_Annual_Household_Income] IN
( [Under $10k], [$10K to $14K],[$15k to $19k], [$20k to $24k], [$25k to $29k], [$30k to $39k], [$40k to $49k], [$50k to $59k], [$60k or more] )
) AS pvt
ORDER BY pvt.[Bus_Fare_Payment_Method]
Bus_Fare_Payment_Method | US$ 10 mil a US$ 14 mil | US$ 15 mil a US$ 19 mil | US$ 20 mil a US$ 24 mil | US$ 25 mil a US$ 29 mil | US$ 30 mil a US$ 39 mil | US$ 40 mil a US$ 49 mil | US$ 60 mil ou mais | Abaixo de US$ 10 mil |
---|---|---|---|---|---|---|---|---|
10-Passagem | 2 | 1 | 1 | 1 | ||||
Adulto de 31 dias | 4 | 1 | 4 | |||||
Passe de dia inteiro reduzido | 1 | |||||||
Outro | 1 | |||||||
Tarifa reduzida | 1 | 1 | 1 | 1 | 3 | 3 | ||
Tarifa em dinheiro normal | 4 | 8 |
Se você pudesse incluir um dbfiddle ou algo assim com os dados de demonstração, seria ótimo. Mas enquanto isso, acho que isso deve funcionar?
Eu adicionei uma coluna "1 AS RC" para contar para que você possa recuperar a coluna Route. Você pode absolutamente usar várias colunas como âncora para suas declarações de pivô, você só precisa usar outra coisa para a agregação.