我的数据如下:
"表"计算机数据
HtmlConverter.convertToPdf(
"<b>This text should be written in bold.</b>",
new PdfWriter(new File("C://users/mentre83/output.pdf")));
到e.t.c
date | property | computer code
---------- -------- -----------
20160131 | companyA | 256584
20160131 | companyB | 987451
我想在2017年9月之后计算每家公司的电脑数量,所以我使用:
20171020 | companyA | 157489
但它不起作用...
请帮助!!
我使用的是SQL Server 2014 Management Studio。和公司系统的数据库
我希望像
一样展示它select
computer data
, count (case computer code when property='companyA' and date='20171001' then 1 else 0 end) as CMAnumber
, count (case computer code when property='companyB' and date='20171001' then 1 else 0 end) as CMBnumber
from
[data]
group by
computer data
order by
computer data
ETC
抱歉,我对SQL T.T 感到很满意答案 0 :(得分:2)
您正在混合两个case
表单。
serached表单在when
:
CASE WHEN <condition> ..
简单表单将其拆分:case
和when
之间的公共操作数以及when
之后的表达式。它暗示了一个等于比较:
CASE <common operand> WHEN <expression> ...
有关案例的更多信息:http://modern-sql.com/feature/case
答案 1 :(得分:1)
如果你想使用CASE
来计算某些条件,如果你为它选择COUNT
函数,那么部分案例应该是NULL
,否则,它会计算其他条件太。或者您应该使用SUM而不是COUNT。我更新了COUNT函数的脚本。
你的案子使用错误,我也纠正了它。
SELECT
[computer data]
, count (case when property='companyA' and date >= '20171001' then 1 end) as CMAnumber
, count (case when property='companyB' and date >= '20171001' then 1 end) as CMBnumber
from
[data]
where
date >= '20171001'
group by
[computer data]
order by
[computer data]
答案 2 :(得分:0)
这个怎么样:
SELECT property , COUNT(*)
FROM [data]
WHERE DATE > '20170930'
GROUP BY property ;
答案 3 :(得分:0)
您可以通过
组合子查询和分组select property,count(*) from (select * from [computer data] where date > '20170930') group by property