SQL case both or one or other 情况
SQL case both or one or other
对 SQL 很陌生,请原谅我的基本问题。
我有 table 个 ID 和值。某些值映射到一个项目,而其他值映射到另一个项目。我还试图强调 ID 何时具有这两项,但 运行 遇到问题:
SEL
DISTINCT ID,
CASE
WHEN value_id IN (1,2,3,4,5,7,17,18) THEN 'item1'
WHEN value_id IN (6,8,9,10,11,12,13,14,15,16) THEN 'item2'
WHEN value_id IN (1,2,3,4,5,7,17,18) AND value_id IN (6,8,9,10,11,12,13,14,15,16) THEN 'both'
ELSE 0 end AS which_item
FROM table_name
GROUP BY 1, 2
但在应用时我没有返回 "both",示例 ID ABCD 有 2 条记录值为 'item1' 和 'item2',但没有 1 条记录值为 'both'。我试着把它作为案例中的第一个陈述,但也不走运。
您只需要 GROUP BY
ID
和一些条件逻辑。这是一种方法:
SELECT ID,
(CASE WHEN SUM(CASE WHEN value_id IN (1, 2, 3, 4, 5, 7, 17, 18) THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN value_id IN (6, 8, 9, 10, 11, 12, 13, 14, 15, 16) THEN 1 ELSE 0 END) > 0
THEN 'both'
WHEN SUM(CASE WHEN value_id IN (1, 2, 3, 4, 5, 7, 17, 18) THEN 1 ELSE 0 END) > 0
THEN 'item1'
WHEN SUM(CASE WHEN value_id IN (6, 8, 9, 10, 11, 12, 13, 14, 15, 16) THEN 1 ELSE 0 END)
THEN 'item2'
ELSE 'none'
END) AS which_item
FROM table_name
GROUP BY 1
对 SQL 很陌生,请原谅我的基本问题。
我有 table 个 ID 和值。某些值映射到一个项目,而其他值映射到另一个项目。我还试图强调 ID 何时具有这两项,但 运行 遇到问题:
SEL
DISTINCT ID,
CASE
WHEN value_id IN (1,2,3,4,5,7,17,18) THEN 'item1'
WHEN value_id IN (6,8,9,10,11,12,13,14,15,16) THEN 'item2'
WHEN value_id IN (1,2,3,4,5,7,17,18) AND value_id IN (6,8,9,10,11,12,13,14,15,16) THEN 'both'
ELSE 0 end AS which_item
FROM table_name
GROUP BY 1, 2
但在应用时我没有返回 "both",示例 ID ABCD 有 2 条记录值为 'item1' 和 'item2',但没有 1 条记录值为 'both'。我试着把它作为案例中的第一个陈述,但也不走运。
您只需要 GROUP BY
ID
和一些条件逻辑。这是一种方法:
SELECT ID,
(CASE WHEN SUM(CASE WHEN value_id IN (1, 2, 3, 4, 5, 7, 17, 18) THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN value_id IN (6, 8, 9, 10, 11, 12, 13, 14, 15, 16) THEN 1 ELSE 0 END) > 0
THEN 'both'
WHEN SUM(CASE WHEN value_id IN (1, 2, 3, 4, 5, 7, 17, 18) THEN 1 ELSE 0 END) > 0
THEN 'item1'
WHEN SUM(CASE WHEN value_id IN (6, 8, 9, 10, 11, 12, 13, 14, 15, 16) THEN 1 ELSE 0 END)
THEN 'item2'
ELSE 'none'
END) AS which_item
FROM table_name
GROUP BY 1