TSQL 不同列表,但如果是单个原始项目则带有额外数据

TSQL distinct list, but with extra data if a single original item

理想情况下,由于客户限制,我想要符合 SQL2008 的答案

我需要一个不同的项目列表,但是有一列 return 是一个特定的数据 如果 原始数据在第一个中只有一个项目地点...

示例数据...

Id   Code
1    A
2    A
3    B

在上面的示例数据中,我想要 return 一个不同的 Code 列表,但是如果只存在该代码的一个实例,我希望 Id 是 returned(否则 null

预期输出...

Code  Id
A     null
B     3

我得到了以下内容,但感觉应该有更简单的方法,也许使用 GROUP BY...

; WITH Data AS (
    SELECT Code, Id ROW_NUMBER() OVER (PARTITION BY Code ORDER BY Id) AS RowNum
    FROM MyTable
)
SELECT D1.Code, CASE (SELECT COUNT(*) FROM Data D2 WHERE D2.Code = D1.Code) WHEN 1 THEN D1.Id ELSE NULL END
FROM Data D1
WHERE D1.RowNum = 1

可以用更好的方式完成吗?

这里想到聚合:

SELECT Code, CASE WHEN COUNT(*) = 1 THEN MAX(Id) END AS Id
FROM MyTable
GROUP BY Code;