あなたがそのような目的
SELECT PRODUCT_BK,
MONTH,
CASE [State] WHEN 'QLD' THEN 'Quensland'
WHEN 'SA_NT' THEN 'something else'
ELSE [State]
END AS [State],
Forecast
FROM (SELECT * FROM Forecast_Table) t
UNPIVOT (Forecast FOR State IN (SA_NT, QLD, VIC_TAS, WA, NSW_ACT)) AS fcst
または、別の方法として、あなたは、あなたのDBに#temp_table
または@variable_table
やテーブルを作成することができ、古い&新しい名前で、この表を記入し、これを最終的な出力を結合するためcase
を使用することができます表。
例:
-- create variable table to store reference between old and new alias
DECLARE @Sometable AS TABLE
(
OldName NVARCHAR(10) ,
ShouldBeName NVARCHAR(20)
)
INSERT @Sometable
(OldName, ShouldBeName)
VALUES ('SA_NT', 'Some Name 1'),
('QLD', 'Some Name 2'),
('VIC_TAS', 'Some Name 3');
--final query
SELECT fcst.PRODUCT_BK ,
fcst.Month ,
COALESCE(S.ShouldBeName, fcst.[State]) AS [State] ,
fcst.Forecast
FROM (SELECT * FROM Forecast_Table) t
UNPIVOT (Forecast FOR State IN (SA_NT, QLD, VIC_TAS, WA, NSW_ACT)) AS fcst
LEFT JOIN @Sometable AS S ON fcst.[State] = S.OldName
それとも、でもこのような:
SELECT fcst.PRODUCT_BK ,
fcst.Month ,
COALESCE(S.ShouldBeName, fcst.[State]) AS [State] ,
fcst.Forecast
FROM (SELECT * FROM Forecast_Table) t
UNPIVOT (Forecast FOR State IN (SA_NT, QLD, VIC_TAS, WA, NSW_ACT)) AS fcst
LEFT JOIN (SELECT *
FROM (VALUES ('SA_NT', 'Some Name 1'),
('QLD', 'Some Name 2'),
('VIC_TAS', 'Some Name 3')
) AS S (OldName, ShouldBeName)
) AS S ON fcst.[State] = S.OldName
あなたが実際にどのような集約をしたいですか?あなたは期待される出力を見せてくれますか? –
あなた自身のことを考えて、お時間をいただきありがとうございました – OZRiz