如何在SQL Server中具有相同ID的不同行中比较相同的库仑值

时间:2020-04-10 08:33:53

标签: sql sql-server

我有一个#temp表,其中包含以下数据集。

enter image description here 我想获得一个结果集,如果pog ='Benchmark'和id = 33,则匹配的老化列数据应附加Yes,否则否。即,需要获得如下结果。对于ID = 22,也应该如此。

enter image description here

任何帮助将不胜感激。

1 个答案:

答案 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