检查我们是否有组内两列的匹配数据

时间:2018-02-01 05:59:03

标签: sql-server group-by

我有一些数据:

ID   Col1   Col2
---  -----  -----
5    10     10       <--- Matching
5    11     10       
5    15     10
6    22     22       <--- Matching
6    10     22 
6    12     22

我尝试了一个类似的查询:

SELECT ID FROM @Table
GROUP BY ID HAVING MAX(COL1) = MAX(COL2)

但是,这仅返回ID 6,因为群组5的最大值Col1为15,与群组{{1}的Col2最大值10不匹配}。有没有办法让所有团体5&amp; 6具有匹配数据5&amp; Col1&amp;中的10 COL2?

预期产出:

22

只显示匹配组的ID。

5 个答案:

答案 0 :(得分:1)

这就像这样:

DECLARE @tblQuestion AS Table
(
    ID int,
    col1 int,
    col2 int
)

INSERT INTO @tblQuestion VALUES
(5,10,10),    
(5,11,10),       
(5,15,10),
(6,22,22),      
(6,10,22), 
(6,12,22);


select distinct ID from @tblQuestion a
where a.col1 = a.col2

答案 1 :(得分:1)

尝试以下查询可能是您的要求,首先获取相同的值行,然后从组

获取最大值
DECLARE @tblQuestion AS Table
(
    ID INT,
    Col1 INt,
    Col2 INT
)

INSERT INTO @tblQuestion VALUES(5,10,10)
INSERT INTO @tblQuestion VALUES(5,10,21)
INSERT INTO @tblQuestion VALUES(5,27,10)
INSERT INTO @tblQuestion VALUES(6,10,12)
INSERT INTO @tblQuestion VALUES(6,15,15)
INSERT INTO @tblQuestion VALUES(6,25,25)
INSERT INTO @tblQuestion VALUES(6,18,10)

;WITH T AS
(
    SELECT
        *,
        ROW_NUMBER() OVER (Partition BY ID order by Col1 Desc) AS PartNo
    FROM @tblQuestion
    WHERE Col1=Col2

)
SELECT ID,Col1,Col2 FROM T
WHERE PartNo=1
ORDER BY ID, Col1 DESC

<强>输出:

enter image description here

答案 2 :(得分:1)

尝试:

SELECT DISTINCT ID 
FROM table_name
WHERE (col1 - col2) = 0

答案 3 :(得分:0)

试试这个:

SELECT distinct ID FROM table_name
where  COL1 = COL2

答案 4 :(得分:0)

在我的情况下,我尝试了一种不同的方法,因为我需要使用GROUP BY&amp;由于我的原始查询复杂性,HAVING子句如下:

SELECT DISTINCT ID FROM @Table
GROUP BY ID 
HAVING MAX(CASE WHEN Col1 = Col2 THEN 1 ELSE 0 END) = 1

我想在这里分享我的解决方案,万一有人感兴趣。