从同一个表中选择具有多行匹配值的记录

时间:2013-09-02 23:20:02

标签: sql-server tsql

我正在寻找方案的查询,如下: 分类帐表

Invoice No.     Date              Amount OfficeCode  

101             01-01-2013        100.00  LONDON

102             01-02-2013        100.00  LONDON
102             04-02-2013       1100.00  LEEDS

103            11-03-2013        100.00  LONDON
103             19-04-2013        150.00  LEEDS

104            01-01-2013        100.00  LONDON

我需要一个t-sql,它只返回发票102和103的发票记录,因为这些发票存在于同一个表中的多个办公室。

我尝试过自我加入,但我遗漏了一些没有给我回复的东西。

感谢您的提前帮助

2 个答案:

答案 0 :(得分:3)

假设记录103是拼写错误,您可以使用GROUP BY获得所需的结果:

SELECT InvoiceNo
FROM Ledger
GROUP BY InvoiceNo  
HAVING COUNT(DISTINCT OfficeCode) > 1

答案 1 :(得分:0)

我相信这就是你要找的东西。

SELECT *
FROM Ledger
WHERE InvoiceNo IN 
(
    SELECT InvoiceNo
    FROM Ledger
    GROUP BY InvoiceNo  
    HAVING COUNT(1) > 1
)