如何排除2个字段不区分的行

问题描述 投票:0回答:1

我有一些代码,它返回不预期的结果。

SELECT DISTINCT
T.Field_1
T.Field_2
FROM
(
    SELECT
        ...
    FROM

    UNION ALL

    SELECT
        ...
    FROM
) AS T
GROUP BY T.Field_1, T.Field_2

结果:

enter image description here

必须缺少第3行,因为它与Field_1和Field_2不同。如何使用一些SQL功能执行此操作?

tsql
1个回答
0
投票

如果Field_1是唯一必须唯一的列,并且您只想要每个唯一的Field_1值的第一条记录,那么下面是一种实现这一目标的方法。

CREATE TABLE #table (Field_1 VARCHAR(MAX), Field_2 VARCHAR(MAX))
INSERT INTO
    #table
VALUES
    ('Item A', ''),
    ('Item B', ''),
    ('Item B', 'Item A'),
    ('Item C', ''),
    ('Item D', 'Item A')

SELECT DISTINCT
    [b].[Field_1], [b].[Field_2]
FROM
    #table AS [a]
OUTER APPLY (
    SELECT TOP 1
        [Field_1], [Field_2]
    FROM
        #table AS [b]
    WHERE
        [a].[Field_1] = [b].[Field_1]
) AS [b]


DROP TABLE #table
© www.soinside.com 2019 - 2024. All rights reserved.