我有一些代码,它返回不预期的结果。
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
结果:
必须缺少第3行,因为它与Field_1和Field_2不同。如何使用一些SQL功能执行此操作?
如果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