带条件查询SELECT计算列

问题描述 投票:0回答:2

我需要在 SELECT QUERY 中创建一个有条件的列。像这样的东西:

SELECT NAME, ADDRESS, IF TABLE.COD=101 THEN return TABLE.VALUE AS TABLE  
FROM CRM

所以 SELECT 中的第三个参数是我带有条件的计算列。

我相信这很简单,但我没有成功解决这个问题。

sql select firebird
2个回答
2
投票
SELECT NAME, ADDRESS, (Case WHEN TABLE.COD=101 THEN TABLE.VALUE END) AS TABLE  
FROM CRM

0
投票

另一种选择是使用

IIF
函数

坦率地说,

IIF
只是名称上的函数,本质上它是一种简写,是扩展为
CASE
语句的宏替换。

这种密切的关系可能就是您在撰写陈述时弄错

IF
CASE
的原因。

 SELECT NAME, ADDRESS, IIF(TABLE.COD=101, TABLE.VALUE, NULL) as TABLE FROM CRM

现在看来你的说法并不真实。您引用了

TABLE.COD
TABLE.VALUE
- 这些显然是第二个表中的一些字段,但您忘记将其包含在您的
FROM
子句中!

因此,我认为您真正需要的可能不是某些条件/计算,而是普通的旧

OUTER JOIN

https://en.wikipedia.org/wiki/Join_(SQL)

 SELECT A.NAME, A,ADDRESS, B.VALUE as TABLE 
 FROM CRM A
   LEFT JOIN SomeTable B ON B.COD=101 AND B.XXXX = A.YYYY
© www.soinside.com 2019 - 2024. All rights reserved.