在何处显示重复的SQL

在何处显示重复的SQL,sql,tsql,Sql,Tsql,我有两张桌子 Invoice (ordernumber, status(which assign to InvoiceStatuses), etc) 及 我只需要检查发票中订单号的副本,但where status!=statusID(其中名称为“已取消”) 我认为您需要在查询中进行以下更改 JOIN子句过滤取消状态和where子句以仅检索重复的状态 SELECT A.* FROM Invoices A WHERE exists (SELECT OrderNumber

我有两张桌子

 Invoice (ordernumber, status(which assign to InvoiceStatuses), etc) 

我只需要检查发票中订单号的副本,但
where status!=statusID
(其中名称为“已取消”)


我认为您需要在查询中进行以下更改

JOIN子句过滤取消状态和where子句以仅检索重复的状态

SELECT A.*
FROM Invoices A
WHERE exists (SELECT OrderNumber
              FROM Invoices c
                 JOIN InvoiceStatuses b 
                 ON c.InvoiceStatus=b.InvoiceStatusID 
                    AND InvoiceStatus != 'CANCELLED'
              WHERE a.OrderNumber = c.OrderNumber
              GROUP BY OrderNumber
              HAVING COUNT(*)>1)

请写下你想做的事情的文字描述,而不仅仅是用英语在WHERE子句中写下你想要的单词。您想在这里做什么还不完全清楚。您的
发票
表中是否有主键列?即使没有其他与之匹配的记录-
发票状态!='取消'
但如果我有两张相同编号的发票,但其中一张已取消,则第二张不需要显示。在您的查询中,其showsI已更新查询。你能检查一下这是否有效吗?
SELECT A.*
FROM Invoices A
JOIN InvoiceStatuses b 
 (
   SELECT * FROM InvoiceStatuses  
   WHERE InvoiceStatus = 'CANCELLED'
 ) B
ON A.InvoiceStatus!=b.InvoiceStatusID
WHERE exists (SELECT OrderNumber
    FROM Invoices c
    WHERE a.OrderNumber = c.OrderNumber
    GROUP BY OrderNumber
    HAVING COUNT(*)>1)
SELECT A.*
FROM Invoices A
WHERE exists (SELECT OrderNumber
              FROM Invoices c
                 JOIN InvoiceStatuses b 
                 ON c.InvoiceStatus=b.InvoiceStatusID 
                    AND InvoiceStatus != 'CANCELLED'
              WHERE a.OrderNumber = c.OrderNumber
              GROUP BY OrderNumber
              HAVING COUNT(*)>1)