【发布时间】:2015-11-26 12:33:07
【问题描述】:
我尝试在下面运行的查询有问题。我已经覆盖并关闭了所有括号,但 SQL Server 仍然突出显示
')' 附近的语法不正确。
AS REV的最后一个括号
SELECT
spot.spotid, rev.revenue
FROM
[Media].[dbo].[T_MED_Spot] AS SPOT
INNER JOIN
(SELECT
CASE
WHEN spot2.status = '4'
THEN spotcc.mediacost * 5
WHEN spot2.status IN ('7','8')
THEN spotcc.mediacost * 20
END AS revenue
FROM
(SELECT *
FROM [Media].[dbo].[T_MED_Spot] AS SPOT2
INNER JOIN [Media].[dbo].[T_MED_SpotCalculation] AS SPOTCC ON spot2.spotid = spotcc.spotid)
) AS REV ON spot.spotid = rev.spotid
我在这里有点不知所措。我希望我想要实现的总体目标很明显,即使用 spotid 将 T_MED_Spot 表与名为 REV 的子查询进行内部连接。
谢谢
【问题讨论】:
-
你不能在那里使用 spot2.status,不在范围内。
-
您没有为您的内部查询设置别名。将
)) AS REV更改为) as T ) AS REV然后在外壳中引用T而不是spot2
标签: sql sql-server subquery inner-join case-when