Sql server 以多对多关系获取两个字段上唯一的记录
我试图在多对多表中获得所有一对一关系 在下面的示例中,我想要返回的唯一记录是最后的3,3Sql server 以多对多关系获取两个字段上唯一的记录,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我试图在多对多表中获得所有一对一关系 在下面的示例中,我想要返回的唯一记录是最后的3,3 PaymentID InvoiceID 1 1 1 2 2 2 3 3 我得到的最接近的是 Select * from Table where PaymentID in ( select PaymentID from Table t inner join ( select InvoiceId from Table g
PaymentID InvoiceID
1 1
1 2
2 2
3 3
我得到的最接近的是
Select * from Table where PaymentID in (
select PaymentID from Table t
inner join (
select InvoiceId from Table
group by InvoiceId
having count(InvoiceId) = 1
) inv on t.InvoiceId = inv.InvoiceId
group by PaymentId
having count(PaymentId) = 1
)
这将返回1和3
有什么好主意吗
谢谢
SELECT *
FROM (
SELECT *,
COUNT(*) OVER (PARTITION BY paymentId) AS pcnt,
COUNT(*) OVER (PARTITION BY invoiceId) AS icnt
FROM mytable
) q
WHERE pcnt = 1
AND icnt = 1