[英]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_Spot
將T_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.