基于 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 = Y
被 ID_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;
我正在尝试根据两个 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 = Y
被 ID_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;