【发布时间】:2019-12-09 21:17:51
【问题描述】:
我需要将其他人的 Access 查询转换为 T-SQL。我大部分都完成了。接下来的两行是我的问题。这是 Access SQL:
...
, [MATERIALVALUE]/1000 AS COSTOURS
...
, IIf([ALLJOBS].[SALESID]="SUI",[COSTOURS]=0,IIf([PRICE]=-1,[COSTOURS]=0,[COSTOURS])) AS COST0
...
第一行 COSTOURS 很简单。只是
...
,MATERIALVALUES/1000 COSTOURS
...
我遇到的问题是稍后在同一 SELECT 语句的 CASE 语句中设置 COSTOURS 以及 COST0 设置为什么?
我的 T-SQL 案例语句是这样的:
,CASE AllJobs.SALESID
WHEN 'SUI' THEN COSTOURS = 0
ELSE CASE ESSDBtRels.PRICE
WHEN -1 THEN COSTOURS = 0
ELSE ESSDBtRels.MATERIALVALUE/1000
END
END COST0
这显然不起作用。如何根据后续 CASE 语句的真实属性为先前设置的列设置新结果。在 TRUE 和 FALSE、TRUE 的情况下,COST0 设置为什么? FALSE,FALSE 会将 COST0 设置为 COSTOURS。
感谢@forpas,由于 MATERIALVALUE 没有任何意义,我将使用以下 SQL:
CASE AllJobs.SALESID
WHEN 'SUI' THEN 0
ELSE CASE ESSDBtRels.PRICE
WHEN 1 THEN 0
ELSE ESSDBtRels.MATERIALVALUE/1000
END
END COST0
【问题讨论】:
标签: sql-server tsql ms-access case