需要一根绳子;))看看例子:
我有一张桌子:
CREATE TABLE [dbo].[test3](
[software] [varchar](50) NOT NULL,
[result] [bit] NOT NULL,
[computername] [varchar](50) NOT NULL
)
使用数据:
INSERT INTO test3 VALUES ('Adobe',1,'abc')
INSERT INTO test3 VALUES ('Office',1,'abc')
INSERT INTO test3 VALUES ('Adobe',0,'def')
INSERT INTO test3 VALUES ('Office',1,'def')
所以在普通的SELECT之后我们有:
software result computername
Office 1 abc
Adobe 1 abc
Office 1 123
Adobe 0 123
现在,我的问题。我想按软件组计算软件数量。 “结果”列表示:0未安装,1安装。
要统计所有已安装的(结果= 1),我可以做到简单:
SELECT
Software
,COUNT(*) as Quantity
FROM
test3
WHERE
result = 1
GROUP BY
software
但是如果我想“反转”结果并计算表中有多少台计算机没有安装软件(结果= 0)我将看不到我需要的结果(报告)。
之后:
SELECT
Software
,COUNT(*) as Quantity
FROM
test3
WHERE
result = 0
GROUP BY
software
我会得到:
Software Quantity
-------------------------------------------------- -----------
Adobe 1
这意味着:“只有1个Adobe被遗漏,其他软件随处可见”。
但我需要好好看一下这样的报告:
Software Quantity
-------------------------------------------------- -----------
Adobe 1
Office 0
这意味着;)“仅错过1次Adobe安装,错过了0 Office安装。”
我坚持认为:/ Plz帮助:)
答案 0 :(得分:1)
将结果检查从WHERE子句移动到CASE:
SELECT
Software
, SUM(case when result = 0 then 1 else 0 end) as Missing
FROM test3
GROUP BY software
这样,您将看到只有成功安装的软件。