我有一些代码,返回的结果不是预期的。
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功能来做到这一点?
答案 0 :(得分: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