在SELECT Query中帮助SQL CASE语句

spo*_*dem 1 sql

这是我的SQL语句:

SELECT [Item], SUM([Quantity]) AS SumOfQuantity, SUM([Price Each]) AS SumOfTotal,
([SumOfTotal] / [SumOfQuantity]) As Average,
CASE 
WHEN [Average] <= 6 THEN SumOfTotal
ELSE 6*[SumOfQuantity] END AS GrossComm
FROM Data
GROUP BY [Item];
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此查询时,收到错误消息:

查询表达式中的语法错误(缺少运算符)'CASE WHEN [Average] <= 6 THEN SumOfTotal ELSE 6*[SumOfQuantity] END AS GrossComm

有任何想法吗?

谢谢!

JNK*_*JNK 5

您不能在CASE语句中按名称引用派生字段.而不是[average]使用公式.

您实际上可能有一个更大的问题,因为您的所有字段都基于其他派生字段,因此您可能需要多次写出每个字段的公式.

你的其他领域也可能存在一个CASE模糊的问题.基本上不要按名称引用同一查询中的计算/别名字段,因为它不起作用.

如果这是SQL Server,您可以使用CTE执行变通方法:

;WITH CTE AS
(
SELECT [Item], SUM([Quantity]) AS SumOfQuantity, SUM([Price Each]) AS SumOfTotal,
FROM Data
GROUP BY [Item]
)
SELECT *, ([SumOfTotal] / [SumOfQuantity]) As Average,
CASE 
WHEN  ([SumOfTotal] / [SumOfQuantity]) <= 6 THEN SumOfTotal
ELSE 6*[SumOfQuantity] END AS GrossComm
FROM CTE
Run Code Online (Sandbox Code Playgroud)