这是我正在使用的表格的性质:
IF OBJECT_ID('TEMPDB..#TEMP') IS NOT NULL
DROP TABLE #TEMP
CREATE TABLE #TEMP (
CategoryA NVARCHAR(10),
CategoryB NVARCHAR(10),
CategoryC NVARCHAR(10),
IntegerA INT,
);
INSERT INTO #TEMP(CategoryA,CategoryB,CategoryC,IntegerA)
VALUES
('A','H','G',20),
('A','H','G',-15),
('F','L','C',10),
('N','U','X',12),
('K','G','G',15),
('K','G','G',-10);
SELECT * FROM #TEMP
请注意,顶部 2 行和底部 2 行具有相同的类别,但它们具有相反极性的整数。中间两行是不同的正整数。
我需要一种方法来选择所有不重复的记录(例如中间的两行)。我需要选择具有负整数的记录,而不选择其正整数。
在这种情况下所需的输出是:
我尝试看看是否可以制作自己的表,只插入我想要的记录,但我再次遇到同样的问题,我无法弄清楚如何区分所有类别都相同的记录。
最佳答案
对于此数据集,您只需使用 row_number()
:
select categoryA, categoryB, categoryC, integerA
from (
select
t.*,
row_number() over(partition by categoryA, categoryB, categoryC order by integerA) rn
from temp t
) t
where rn = 1
关于sql - 选择类别相同但整数相反的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61110478/