我遇到了一个问题,我试图在下面运行。我覆盖并关闭了所有括号,但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
的子查询连接起来。
由于
答案 0 :(得分:2)
SELECT s.spotid,
CASE
WHEN s.[status] = '4' THEN c.mediacost * 5
WHEN s.[status] IN ('7','8') THEN c.mediacost * 20
END AS revenue
FROM [dbo].[T_MED_Spot] s
JOIN [dbo].[T_MED_SpotCalculation] c ON c.spotid = s.spotid
检查此查询...
答案 1 :(得分:1)
这是否有效:
SELECT spot.spotid, rev.revenue
FROM [Media].[dbo].[T_MED_Spot] AS SPOT
INNER JOIN
(SELECT
CASE
WHEN T.status = '4'
THEN T.mediacost*5
WHEN T.status IN ('7','8')
THEN T.mediacost*20
END AS revenue, spotid
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 T ) AS REV
ON spot.spotid = rev.spotid
您没有为内部查询设置别名
答案 2 :(得分:0)
您命名了第一个INNER JOIN子查询AS REV
,但第二个子查询没有别名。