我有一些数据:
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。
答案 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
<强>输出:强>
答案 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
我想在这里分享我的解决方案,万一有人感兴趣。