我有两列:
输入
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,那么我将创建另一个 col3,其值为“NO”/“YES”,或者只是“0”/“1”。
输出
col1 col3
1 NO
2 YES
3 YES
SELECT Col1, MAX(CASE WHEN col2 = 1 THEN 1 ELSE 0 END) Col3
FROM YourTable
GROUP BY Col1
更新 好了,由于上面的查询对您不起作用,您可以尝试以下操作:
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
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);
SELECT Col1,
CASE WHEN MAX(Col2) = 1 THEN 'YES' ELSE 'NO' END AS Col3
FROM TableName
GROUP BY Col1
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