2015-12-02 31 views
-2

任何机构都可以告诉我关于下面的情况。如何将当前年份和过去一年的值作为列

我有事实表,其中有datekey,我有桥表,它有DatekeyPYdatekey(PYDatekey表示去年的值)。

当我想要当年的价值时,我加入FactTable.DateKey = BridgeTable.DateKey,对于去年的价值FactTable.DateKey=BridgeTable.PYDateKey

我正在写两个单独的查询做联合所有以获得这些值作为行。

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

+0

'INNER JOIN' - [使用内部联接(https://technet.microsoft.com/fi-fi/library/ms190014(V = SQL.105)的.aspx) – Fabio

+1

而不是描述,只是具有期望的输出结构的条目的后表结构。还显示,你仍然做了什么。 – Ajay2707

回答

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 
相关问题