我覺得CUBE
或ROLLUP
將幫助您達到結果的查詢。但是請找到我創建的下面的查詢。我剛剛從你共享的模型創建了查詢。我無法保證表現。也請忽略第一欄和最後一欄。
;
WITH CTE_ShipDetails1
AS (
SELECT ShipCountry
, MIN(ShipCity) ShipCity
, SUM(Freight) NetCity
, 0 RowNum
FROM CountryDetails
GROUP BY ShipCountry
)
, CTE_ShipDetails2
AS
(
SELECT CTE1.ShipCountry ShipCountry1
, NULL ShipCountry
, CountryDetails.ShipCity
, ROW_NUMBER() OVER (
ORDER BY CTE1.ShipCountry
, CTE1.ShipCity
) RowNum
, SUM(Freight) OVER(PARTITION BY CountryDetails.ShipCountry, CountryDetails.ShipCity) NetCity
FROM CountryDetails
, CTE_ShipDetails1 CTE1
WHERE CTE1.ShipCountry = CountryDetails.ShipCountry
AND CTE1.ShipCity <> CountryDetails.ShipCity
)
SELECT DISTINCT ShipCountry1, ShipCountry
, ShipCity, NetCity, MIN(RowNum) RowNum
FROM
(
SELECT TOP 250000 ShipCountry ShipCountry1, ShipCountry
, ShipCity, NetCity, RowNum
FROM CTE_ShipDetails1 CTE1 UNION
SELECT TOP 250000 ShipCountry1, ShipCountry
, ShipCity, NetCity, RowNum
FROM CTE_ShipDetails2 CTE2
) AS a GROUP BY ShipCountry1, ShipCountry
, ShipCity, NetCity
ORDER BY ShipCountry1 ASC
, RowNum ASC
;
是的。它返回結果像我預期的那樣。還有一個疑問是,如果我運行下面的查詢,我得到了冗餘數據的結果。 從CountryDetails選擇ShipCountry按SUM(運費)結算(由ShipCountry劃分) 如果我添加group by子句,我收到錯誤消息。 從國家詳情組中選擇ShipCountry組按國家/地區排序按SUM(貨運)劃分(ShipCountry劃分) 可以在沒有獲取冗餘數據的情況下獲得相同的結果嗎? –