0

我想使用 CASE 语句从表中选择并加入三行。我更习惯于 C++,它会是一个 IF 语句,这里是错误的伪代码(这适用于任何要加入的行,即如果任何要加入的行具有 .. .)

IF (value1 == 1) // IF any of the rows have value1 == 1
{
    value1 = 1;
    value2 = 0;
}
ELSE IF (value1 == 0 && value2 == 1) // IF all of the rows have value1 == 0 and any have value2 == 1 
{
    value1 = 0;
    value2 = 1;
}

例如,如果三行如下所示(ID 必须相同,不要问我为什么......)

ID    value1  value2
--------------------
 1      1       0
 1      0       0
 1      0       1

我希望得到的连接行是

 1      1       0

但是,如果三个原始行看起来像

ID    value1  value2
--------------------
 1      0       0
 1      0       0
 1      0       1

那么我希望得到的连接行是

 1      0       1

我对劣质的表格格式感到抱歉,我不习惯标记。任何正确方向的帮助或指示将不胜感激。速度应该不是真正的问题,因为每个查询连接的行数不会超过三行。

4

1 回答 1

0

这根本不是JOIN,您似乎需要按照您的逻辑汇总结果。很高兴知道您正在使用什么 RDBMS,但这应该适用于其中的大多数:

SELECT  ID,
        Value1,
        CASE WHEN Value1 = 1 THEN 0 ELSE Value2 END Value2
FROM (  SELECT  ID,
                MAX(CASE WHEN Value1 = 1 THEN 1 ELSE 0 END) Value1,
                MAX(Value2) Value2
        FROM YourTable
        GROUP BY ID) A
于 2013-08-30T20:42:12.403 回答