查询 SELECT 带条件的计算列
Query SELECT calculated column with condition
我需要在我的 SELECT QUERY 中创建一个包含条件的列。像这样:
SELECT NAME, ADDRESS, IF TABLE.COD=101 THEN return TABLE.VALUE AS TABLE
FROM CRM
所以 SELECT 中的第三个参数是我计算的带有条件的列。
我相信这很简单,但我没有成功解决这个问题。
由于您没有提供任何数据和预期的输出,所以很难弄清楚您到底想要什么。你还是可以试试下面的。
SELECT NAME, ADDRESS, (Case WHEN TABLE.COD=101 THEN TABLE.VALUE END) AS TABLE
FROM CRM
另一种选择是使用 IIF
函数。
https://firebirdsql.org/refdocs/langrefupd20-iif.html
坦率地说,IIF 只是名称上的函数,本质上它是一个 shorthand,扩展到 CASE
语句的宏替换。
这种密切的关系可能是您在撰写声明时弄错 IF
和 CASE
的原因。
SELECT NAME, ADDRESS, IIF(TABLE.COD=101, TABLE.VALUE, NULL) as TABLE FROM CRM
现在看来,你的说法不真实。您指的是 TABLE.COD
和 TABLE.VALUE
- 这些显然是来自第二 table 的一些字段,但您忘记将其包含在 FROM
子句中!
因此,我认为您真正需要的可能不是一些 condition/calculation,而是一个普通的 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
我需要在我的 SELECT QUERY 中创建一个包含条件的列。像这样:
SELECT NAME, ADDRESS, IF TABLE.COD=101 THEN return TABLE.VALUE AS TABLE
FROM CRM
所以 SELECT 中的第三个参数是我计算的带有条件的列。
我相信这很简单,但我没有成功解决这个问题。
由于您没有提供任何数据和预期的输出,所以很难弄清楚您到底想要什么。你还是可以试试下面的。
SELECT NAME, ADDRESS, (Case WHEN TABLE.COD=101 THEN TABLE.VALUE END) AS TABLE
FROM CRM
另一种选择是使用 IIF
函数。
https://firebirdsql.org/refdocs/langrefupd20-iif.html
坦率地说,IIF 只是名称上的函数,本质上它是一个 shorthand,扩展到 CASE
语句的宏替换。
这种密切的关系可能是您在撰写声明时弄错 IF
和 CASE
的原因。
SELECT NAME, ADDRESS, IIF(TABLE.COD=101, TABLE.VALUE, NULL) as TABLE FROM CRM
现在看来,你的说法不真实。您指的是 TABLE.COD
和 TABLE.VALUE
- 这些显然是来自第二 table 的一些字段,但您忘记将其包含在 FROM
子句中!
因此,我认为您真正需要的可能不是一些 condition/calculation,而是一个普通的 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