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
您没有为内部查询设置别名
我在下面 运行 尝试查询时遇到问题。我已经涵盖并关闭了所有括号,但 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
您没有为内部查询设置别名