无法使用在左联接中使用交叉应用创建的临时列 SQL
Not able to use temporary column created using Cross apply in Left Join SQL
我使用交叉应用将数据从宽格式翻转为高格式。使用以下问题的答案来实施 Using PIVOT to Flip Data from Wide to Tall
我已经创建了临时列Sector
。我想将此列用于与另一个 table 的 Left Join。但是我在这一行 V.Sector = S.[Sector name]
上收到错误 Invalid column name 'Sector'
SELECT Date,
Country,
Sector,
PE,
PX_BOOK
S.Sector_level
FROM [Economic_Data].[dbo].[Sector_Valuations] V
CROSS APPLY
(
VALUES
('Large Cap Equity',[Large Cap Equity_PE],[Large Cap Equity_book]),
('Mid Cap Equity',[Mid Cap Equity_PE],[Mid Cap Equity_book]),
('Small Cap Equity',[Small Cap Equity_PE],[Small Cap Equity_book]),
('Value Index',[Value Index_PE],[Value Index_book]),
('Growth Index',[Growth Index_PE],[Growth Index_book]),
) x (Sector, PE, PX_BOOK)
Left join [Economic_Data].[dbo].[Sector level] S
on V.Sector = S.[Sector name]
谁能帮我解决这个问题。谢谢!
您需要参考 cross apply
别名:
[Economic_Data].[dbo].[Sector level] S
on V.Sector = x.[Sector name]
--------------^
您似乎需要删除最后一个逗号。
SELECT Date,
Country,
Sector,
PE,
PX_BOOK
S.Sector_level
FROM [Economic_Data].[dbo].[Sector_Valuations] V
CROSS APPLY
(
VALUES
('Large Cap Equity',[Large Cap Equity_PE],[Large Cap Equity_book]),
('Mid Cap Equity',[Mid Cap Equity_PE],[Mid Cap Equity_book]),
('Small Cap Equity',[Small Cap Equity_PE],[Small Cap Equity_book]),
('Value Index',[Value Index_PE],[Value Index_book]),
('Growth Index',[Growth Index_PE],[Growth Index_book])--, <------
) x (Sector, PE, PX_BOOK)
Left join [Economic_Data].[dbo].[Sector level] S
on V.Sector = S.[Sector name]
我使用交叉应用将数据从宽格式翻转为高格式。使用以下问题的答案来实施 Using PIVOT to Flip Data from Wide to Tall
我已经创建了临时列Sector
。我想将此列用于与另一个 table 的 Left Join。但是我在这一行 V.Sector = S.[Sector name]
Invalid column name 'Sector'
SELECT Date,
Country,
Sector,
PE,
PX_BOOK
S.Sector_level
FROM [Economic_Data].[dbo].[Sector_Valuations] V
CROSS APPLY
(
VALUES
('Large Cap Equity',[Large Cap Equity_PE],[Large Cap Equity_book]),
('Mid Cap Equity',[Mid Cap Equity_PE],[Mid Cap Equity_book]),
('Small Cap Equity',[Small Cap Equity_PE],[Small Cap Equity_book]),
('Value Index',[Value Index_PE],[Value Index_book]),
('Growth Index',[Growth Index_PE],[Growth Index_book]),
) x (Sector, PE, PX_BOOK)
Left join [Economic_Data].[dbo].[Sector level] S
on V.Sector = S.[Sector name]
谁能帮我解决这个问题。谢谢!
您需要参考 cross apply
别名:
[Economic_Data].[dbo].[Sector level] S
on V.Sector = x.[Sector name]
--------------^
您似乎需要删除最后一个逗号。
SELECT Date,
Country,
Sector,
PE,
PX_BOOK
S.Sector_level
FROM [Economic_Data].[dbo].[Sector_Valuations] V
CROSS APPLY
(
VALUES
('Large Cap Equity',[Large Cap Equity_PE],[Large Cap Equity_book]),
('Mid Cap Equity',[Mid Cap Equity_PE],[Mid Cap Equity_book]),
('Small Cap Equity',[Small Cap Equity_PE],[Small Cap Equity_book]),
('Value Index',[Value Index_PE],[Value Index_book]),
('Growth Index',[Growth Index_PE],[Growth Index_book])--, <------
) x (Sector, PE, PX_BOOK)
Left join [Economic_Data].[dbo].[Sector level] S
on V.Sector = S.[Sector name]