这是我的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
有任何想法吗?
谢谢!
您不能在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)
| 归档时间: |
|
| 查看次数: |
6048 次 |
| 最近记录: |