【发布时间】:2019-08-16 04:31:35
【问题描述】:
我有多个 CTE,这会导致以下通用表结构:
Year | Month | Total_Purchases_Product_Line_X
这些代表按月和年分组的跨多个产品线的购买。
例如)
SELECT * FROM cte_line_x
Year | Month | Total_Purchases_Product_Line_X
2018 01 256
2018 02 192
SELECT * FROM cte_line_y
Year | Month | Total_Purchases_Product_Line_Y
2018 01 76
2018 02 59
我想创建类似下面的东西
Year | Month | Total_Purchases_Line_X | Total_Purchases_Line_Y | Total_Purchases_Line_Z
2018 01 256 76
2018 02 192 59
每个产品线的总采购量相加。但是,在将每个 CTE 的日期组合在一起后,我遇到了问题。 这是我尝试过的:
SELECT
cte_product_x.Month,
cte_product_x.Year,
cte_product_x.total as Total_X,
cte_product_y.total as Total_Y,
cte_product_z.total as Total_Z
FROM
cte_product_x
LEFT JOIN
cte_product_y ON
cte_product_y.year = cte_product_x.year
AND
cte_product_y.month = cte_product_x.month
LEFT JOIN
cte_product_z ON
cte_product_z.year = cte_product_x.year
AND
cte_product_z.month = cte_product_x.month
GROUP BY
cte_product_x.Month,
cte_product_x.Year
ORDER BY
cte_product_x.Month,
cte_product_x.Year
我尝试将我的 SELECT 更改为:
SELECT
cte_product_x.Month,
cte_product_x.Year,
MAX(cte_product_x.total as Total_X),
MAX(cte_product_y as Total_Y),
MAX(cte_product_z as Total_Z)
但是,它仅适用于“Total_X”。其他列的计数是为所有月份的分组总数找到的最大值。我不明白为什么。
【问题讨论】: