TSQL 包括有条件的帐户

TSQL include accounts with condition

我有一个 table 目前包括这样的所有帐户:

我需要在 Company = MMCR 和 HSSA AND Days sent >= 90 的情况下进行过滤,然后我需要在报告中包含这些公司。无论发送天数如何,所有其他公司都包括在内。

这就是我要找的:

应该这样做:

SELECT ACCOUNT, INVOICE, COMPANY, DAYS_SENT FROM TABLE1
WHERE (COMPANY = 'MMCR' AND DAYS_SENT >= 90) OR (COMPANY = 'HSSA' AND DAYS_SENT >= 90)

UNION

SELECT ACCOUNT, INVOICE, COMPANY, DAYS_SENT FROM TABLE1
ACCOUNT NOT IN (
SELECT ACCOUNT
WHERE (COMPANY = 'MMCR' AND DAYS_SENT >= 90) OR (COMPANY = 'HSSA' AND DAYS_SENT >= 90)
)
  • 将顶部查询与底部查询合并。
  • 热门查询将包含 2 家公司及其日期范围
  • 底部查询是顶部查询中没有的所有内容。

有很多方法可以解决这个问题,我只是喜欢这种方法,因为我觉得它易于阅读和理解(尤其是以后要更新它时!)

你可以用一个简单的 OR 来做到这一点:

SELECT Account, Invoice, Company, DaysSent
    FROM YourTable
    WHERE Company NOT IN('MMCR', 'HSSA')
       OR (Company IN('MMCR', 'HSSA') AND DaysSent >= 90);

或者比其他答案更简单:

SELECT [Account], [Invoice #], [Company], [Days Sent]
FROM [dbo].[YourTable]
WHERE NOT ([Company] IN ('MMCR', 'HSSA') AND [Days Sent] < 90);
   You can do like this  

     SELECT ACCOUNT, INVOICE, COMPANY, DAYS_SENT FROM TABLE1
        WHERE Company   in ('MMCR', 'HSSA') AND DAYS_SENT >= 90 

        UNION

        SELECT ACCOUNT, INVOICE, COMPANY, DAYS_SENT FROM TABLE1 Where 
        ACCOUNT NOT IN  ('MMCR', 'HSSA')