我有一个#temp表,其中包含以下数据集。
我想获得一个结果集,如果pog ='Benchmark'和id = 33,则匹配的老化列数据应附加Yes,否则否。即,需要获得如下结果。对于ID = 22,也应该如此。
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以为此使用窗口功能:
SELECT
id,
name,
CONCAT(
age,
CASE WHEN MAX(pog) OVER(PARTITION BY id) = 'Benchmark' THEN
CASE WHEN COALESCE(pog, '') <> 'Benchmark' AND Age = MAX(CASE WHEN pog = 'Benchmark' THEN Age END) OVER(PARTITION BY id) THEN '-Yes' ELSE '-No' END
END
) as age,
pog
FROM table
我相信这也会起作用:
SELECT
id,
name,
CONCAT(
age,
CASE COALESCE(MAX(CASE WHEN pog = 'Benchmark' THEN age END) OVER(PARTITION BY id), -1)
WHEN age THEN REPLACE(CONCAT(age, pog, '-Yes'), 'Benchmark-Yes', '')
WHEN -1 THEN ''
ELSE '-No' END
END
) as age,
pog
FROM table