Sql server 如何将当前年份和上一年的值作为列获取

Sql server 如何将当前年份和上一年的值作为列获取,sql-server,Sql Server,请任何人告诉我下面的情况 我有一个包含日期键的事实表,我有一个包含datekey和PYdatekey的桥接表(PYdatekey表示去年的值) 当我想要当前年份的值时,我加入了FactTable.DateKey=BridgeTable.DateKey,用于上一年的值FactTable.DateKey=BridgeTable.PYDateKey 我正在编写两个单独的查询,执行union all以获取这些值作为行 但现在我需要将这些值作为列来获取。请建议如何实现这一点。您可以两次加入FactTabl

请任何人告诉我下面的情况

我有一个包含日期键的事实表,我有一个包含
datekey
PYdatekey
的桥接表(PYdatekey表示去年的值)

当我想要当前年份的值时,我加入了
FactTable.DateKey=BridgeTable.DateKey
,用于上一年的值
FactTable.DateKey=BridgeTable.PYDateKey

我正在编写两个单独的查询,执行union all以获取这些值作为行


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

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

如果BridgeTable中不需要Datekey和/或PYdatekey,请使用左联接

--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

内部联接
-只发布带有所需输出结构的条目的表结构,而不是描述。也要展示你所做的一切。