查询sql返回自定义值

时间:2012-09-06 17:49:35

标签: sql

我有一个包含3列的表(包含仅包含从0到10的值的Integer值)。我希望使用单个查询提取一个包含1列的表。此列必须基于以下逻辑采用值:

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

  2. 如果最后三列中没有一列的值为0 ---->列的值必须采用值1。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

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

select (case when col1 = 0 or col2 = 0 or col3 = 0 then 0 else 1 end)

答案 2 :(得分:1)

试试这个

SELECT  
    CASE
    WHEN column1 = 0 THEN 0
    WHEN column2 = 0 THEN 0
    WHEN column3 = 0 THEN 0
    ELSE 1
    END
FROM urtable