Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 以多对多关系获取两个字段上唯一的记录_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 以多对多关系获取两个字段上唯一的记录

Sql 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

我试图在多对多表中获得所有一对一关系

在下面的示例中,我想要返回的唯一记录是最后的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 
    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