SQL 服务器查询语法(子查询、括号和 CASE WHEN)

SQL Server query syntax (sub queries, brackets and CASE WHEN)

我在下面 运行 尝试查询时遇到问题。我已经涵盖并关闭了所有括号,但 SQL 服务器仍然突出显示

Incorrect syntax near ')'.

在最后一个括号 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 table 与名为 REV 的子查询进行内部连接

谢谢

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

检查此查询...

您将第一个 INNER JOIN 子查询命名为 AS REV,但第二个子查询没有别名。

这个有用吗:

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

您没有为内部查询设置别名