簡體   English   中英

SQL Server查詢語法(子查詢,方括號和CASE WHEN)

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

我要在下面運行的查詢存在問題。 我已經蓋過了所有括號,但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

我有點不知所措。 我希望這很明顯是我想要實現的總體目標,即使用T_MED_SpotT_MED_Spot表與名為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

檢查此查詢...

這項工作:

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

您沒有為內部查詢添加別名

您將第一個INNER JOIN子查詢命名為AS REV但是第二個子查詢沒有別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM