1

私は2つの列を持っています:

入力

col1 col2
1    0
1    0
1    0
2    1
2    0
3    0
3    0
3    1
3    1

col1 に、繰り返されるエンティティ ID 番号が保持されているとします。このエンティティ ID の col2 に値 1 が含まれているかどうかをテストしています。したがって、エンティティ ID が対応する col2 に 1 を持っている場合、「NO」/「YES」の値または単に「0」/「1」の別の col3 を作成します。

出力

col1 col3
1    NO
2    YES
3    YES
4

4 に答える 4

3
SELECT Col1, MAX(CASE WHEN col2 = 1 THEN 1 ELSE 0 END) Col3
FROM YourTable
GROUP BY Col1

UPDATED さて、上記のクエリはうまくいかないので、次のことを試すことができます:

SELECT Col1, MAX(Col3) Col3
FROM (  SELECT  Col1, 
                CASE WHEN col2 = 1 THEN 1 ELSE 0 END AS Col3
        FROM YourTable) A
GROUP BY Col1
于 2013-03-12T12:59:30.837 に答える
2
UPDATE table 
SET 
    col3 = DECODE(col2, 1, 'YES', 'NO');

特定のエンティティ ID に対してのみこれを実行する場合:

UPDATE table 
SET 
    col3 = DECODE(col2, 1, 'YES', 'NO')
WHERE
    col1 = yourid;

列 3 が存在しない場合は、事前に作成する必要があります

ALTER TABLE table ADD (col3 NUMBER NOT NULL);
于 2013-03-12T13:00:27.630 に答える
1
SELECT  Col1,
        CASE WHEN MAX(Col2) = 1 THEN 'YES' ELSE 'NO' END AS Col3
FROM    TableName
GROUP   BY Col1
于 2013-03-12T12:58:10.963 に答える
1
SELECT DISTINCT col1, 
CASE WHEN EXISTS(SELECT * FROM MyTab WHERE col1 = M.col1 AND col2 = 1) 
THEN 'Yes' ELSE 'No' AS col3 FROM MyTab M
于 2013-03-12T13:01:20.217 に答える