0

我有一个包含 3 列的表(包含仅假定从 0 到 10 的值的整数值)。我想用一个查询提取一个有 1 列的表。此列必须采用基于以下逻辑的值:

  1. 如果这三列之一的值为 0 ----> 查询生成的表的列的值也必须为 0。

  2. 如果最后三列都没有值为 0 ----> 列的值必须假定值为 1。

4

3 回答 3

2

您正在寻找CASE构造或IF功能:

SELECT CASE WHEN (t.field1 = 0 OR t.field2 = 0 OR t.field3 = 0) THEN 0
       ELSE 1 END AS value
FROM t;

在这种特定情况下,您还可以使用任何成员为零将使乘积为零的事实:

SELECT CASE WHEN (t.field1*t.field2*t.field3 = 0) THEN 0 ELSE 1 END AS value
FROM t;

或者

SELECT IF((t.field1*t.field2*t.field3)=0, 0, 1) AS value FROM t;
于 2012-09-06T17:52:59.683 回答
1

这是一个简单的案例陈述。假设没有 NULL 值,试试这个:

select (case when col1 = 0 or col2 = 0 or col3 = 0 then 0 else 1 end)
于 2012-09-06T17:52:29.933 回答
1

试试这个

SELECT  
    CASE
    WHEN column1 = 0 THEN 0
    WHEN column2 = 0 THEN 0
    WHEN column3 = 0 THEN 0
    ELSE 1
    END
FROM urtable
于 2012-09-06T17:54:38.827 回答