T-SQL COUNT'A','B'和'A或B'

Cra*_*aig 1 t-sql sql-server-2008

从概念上讲,我有一个表格,上面有水果项目清单.我想在一个查询中查看有多少苹果,橙子,"苹果或橙子"以及"其他水果"的数量.

我怎样才能在T-SQL中实现这一目标?

gbn*_*gbn 9

SELECT
   COUNT(*) AS Allfruits,
   COUNT(CASE WHEN fruit = 'Apple' THEN 1 END) AS AppleCount,
   COUNT(CASE WHEN fruit = 'Orange' THEN 1 END) AS OrangeCount,
   COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS AppleOrOrangeCount,
   COUNT(*) - COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS OtherFruitCount
FROM
   MyTable
Run Code Online (Sandbox Code Playgroud)

注意:CASE在没有ELSE子句或某些显式条件的情况下给出NULL.COUNT忽略NULL.