我知道当GROUP BY仅应用到一列上并且具有下面提到的示例代码时,如何执行Pivot表达式:
SELECT * FROM
(
SELECT
category_name,
product_id,
model_year
FROM
production.products p
INNER JOIN production.categories c
ON c.category_id = p.category_id
) t
PIVOT(
COUNT(product_id)
FOR category_name IN (
[Children Bicycles],
[Comfort Bicycles],
[Cruisers Bicycles],
[Cyclocross Bicycles],
[Electric Bikes],
[Mountain Bikes],
[Road Bikes])
) AS pivot_table;
在上述情况下,GROUP BY仅应用于“ category_name”列。
在“分组依据”要应用于多个列(例如category_name和model_year)的情况下,是否有人知道如何执行Pivot?
谢谢
答案 0 :(得分:0)
只需使用两个PIVOT
子句:
PIVOT(
COUNT(product_id)
FOR category_name IN (
[Children Bicycles],
[Comfort Bicycles],
[Cruisers Bicycles],
[Cyclocross Bicycles],
[Electric Bikes],
[Mountain Bikes],
[Road Bikes])
) AS P1
PIVOT(COUNT(product_id) FOR model_year IN ([2017], [2018], [2019])) AS P2
答案 1 :(得分:0)
只需使用条件聚合:
select sum(case when category = 'Children Bicycles' and
model_year = 2019
then 1 else 0
end) as Children_Bicycles_2019,
sum(case when category = 'Children Bicycles' and
model_year = 2018
then 1 else 0
end) as Children_Bicycles_2018,
. . .
from production.products p join
production.categories c
on c.category_id = p.category_id