基于 ID 列的标志

Flag based on ID columns

我正在尝试根据两个 ID 列和一个标志分配标志。

输入:

ID_1 ID_2 Flag1
1000 1111 N
2000 1111 Y
3000 1111 Y
4000 2222 N
5000 2222 N

输出:

ID_1 ID_2 Flag1 Flag2
1000 1111 N Y
2000 1111 Y Y
3000 1111 Y Y
4000 2222 N N
5000 2222 N N

Flag2 是使用 Flag1 计算的,其中如果任何 Flag1 = YID_2 划分为 'Y' 则设置 Flag2 = Y .

如果所有Flag1 = 'N'ID_2分割,则设置Flag2 = N

我无法访问 SQL Server 2008,但这适用于 Azure:

CREATE TABLE #t (ID_1 int, ID_2 int, Flag1 char(1));

INSERT INTO #t (ID_1, ID_2, Flag1) VALUES (1000, 1111, 'N');
INSERT INTO #t (ID_1, ID_2, Flag1) VALUES (2000, 1111, 'Y');
INSERT INTO #t (ID_1, ID_2, Flag1) VALUES (3000, 1111, 'Y');
INSERT INTO #t (ID_1, ID_2, Flag1) VALUES (4000, 2222, 'N');
INSERT INTO #t (ID_1, ID_2, Flag1) VALUES (5000, 2222, 'N');

WITH flg (ID_2, MaxFlag)
AS
(
    SELECT ID_2, MAX(Flag1) MaxFlag
    FROM #t
    GROUP BY ID_2
)
SELECT t.*, flg.MaxFlag
FROM #t t
JOIN flg ON t.ID_2 = flg.ID_2;