如何将当前年份和上一年度值作为列

时间:2015-12-02 05:12:22

标签: sql-server

任何人都可以告诉我下面的情况。

我有一个具有datekey的事实表,我的桥表有$ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); $data = json_decode($data ); Datekey(PYDatekey代表去年的值)。

如果我想要当前年度值,我将加入PYdatekey,以换取去年价值FactTable.DateKey = BridgeTable.DateKey

我正在写两个单独的查询,使用union all将这些值作为行。

但现在我需要将这些值作为列。请建议如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

您可以两次加入FactTable,分别获取之前和当前的数据。

如果BridgeTable中不需要Datekey和/或PYdatekey,请使用LEFT JOIN。

--Sample data
CREATE TABLE BridgeTable (Datekey int, PYdatekey int)
CREATE TABLE FactTable (datekey int, SomeField varchar(100))
INSERT INTO FactTable VALUES (1, 'A')
INSERT INTO FactTable VALUES (2, 'B')
INSERT INTO BridgeTable VALUES (1, 2)
INSERT INTO BridgeTable VALUES (1, null)
INSERT INTO BridgeTable VALUES (null, 2)

--Query
SELECT PreviousFacts.SomeField AS Previous_SomeField, CurrentFacts.SomeField AS Current_SomeField --Or whatever columns you need
FROM BridgeTable
LEFT JOIN FactTable PreviousFacts ON BridgeTable.PYdatekey = PreviousFacts.DateKey
LEFT JOIN FactTable CurrentFacts ON BridgeTable.Datekey = CurrentFacts.DateKey