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')
我有一个 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')