在這個示例資料集中,我有一些顏色:“紅色”和“藍色”以及一些水果:“蘋果”和“葡萄”與人/姓名相關聯。

我的目標是為這些分組中的每一個添加一個列,稱為"Colors"和Fruit。每當它們各自分組的值 > 0 時,這些新添加的列將計數 1。
例如,如果 "Red" 或 "Blue" 包含 > 0 的值,我們將 1 添加到Colors。對于 John Smith,由于 Red 和 Blue 列都包含 > 0 的值,因此Colors列將為 2。這是預期的輸出:

我知道 case 陳述句可以加 1 或 0,但是當每個分組有 2 列時,我們該怎么做呢?
uj5u.com熱心網友回復:
你不需要在 CASE 中。
SELECT blue, red, (blue > 0) (red > 0) colors,
apple, grapes, (apple > 0) (grapes > 0) fruit
FROM source_table
源表中的值不應為 NULL。
uj5u.com熱心網友回復:
SELECT
*,
((CASE WHEN apple > 0 THEN 1 ELSE 0 END) (CASE WHEN WHEN grapes > 0 THEN 1 ELSE 0 END)) as fruit,
((CASE WHEN red > 0 THEN 1 ELSE 0 END) (CASE WHEN blue > 0 THEN 1ELSE 0 END)) as colors
from table
uj5u.com熱心網友回復:
假設源資料處于旋轉狀態
with cte as (
select 'john' as name, 2 as blue, 3 as red, 2 as apple, 4 as grape union all
select 'tom', 0 , 8, 0, 0
)
select
name
, blue
, red
, coalesce((blue > 0),0)
coalesce((red > 0),0)
as colours
, apple
, grape
, coalesce((apple > 0),0)
coalesce((grape > 0),0)
as fruits
from cte
姓名 | 藍色 | 紅色 | 顏色 | 蘋果| 高解析度照片| CLIPARTO 葡萄| 高解析度照片| CLIPARTO 水果 :--- | ---: | --: | ------: | ----: | ----: | -----: 約翰 | 2 | 3 | 2 | 2 | 4 | 2 湯姆| 0 | 8 | 1 | 0 | 0 | 0
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494089.html
下一篇:獲得最高銷量
