【发布时间】:2022-07-18 21:35:41
【问题描述】:
【问题讨论】:
标签: sql sql-server sql-server-2008
【问题讨论】:
标签: sql sql-server sql-server-2008
您可以尝试以下方法:
SELECT masterid, detailid, itemid, rate FROM mytable
WHERE (masterid, detailid, rate) IN
(
SELECT masterid, detailid, rate FROM mytable t
JOIN mytable o ON o.masterid = t.masterid
AND o.detailid = t.detailid AND o.rate <> t.rate
GROUP BY t.masterid, t.detailid, t.rate
HAVING COUNT(*) >= 2
)
子查询中的内连接确保仅出现具有不相等计数器部分的行。 或者您可以在外部查询中添加另一个子查询条件:
AND EXISTS
(
SELECT * FROM mytable o
WHERE o.masterid = t.masterid AND o.detailid = t.detailid AND o.rate <> t.rate
)
【讨论】:
我相信您正在寻找如下查询
select t1.* from t t1
join
(
select masterid,itemid
from t
group by masterid,itemid
having count(distinct rate )>1
)t2
on t1.masterid=t2.masterid and t1.itemid=t2.itemid
order by masterid,detailid
【讨论】:
试试下面的代码:
Select masterid, detailid, rate, count(*) as count from Mytable
group by masterid, detailid, rate
having count(*) > 1
【讨论】: