繁体   English   中英

SQL针对多列进行测试后分配值

[英]SQL assigning a value after testing against multiple columns

我有两列:

输入

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM