我想从缺陷数据库构建查询。每个缺陷都有提交日期和状态(打开,关闭,延期等)我希望我的结果设置为3列:
Date, # bugs w/ Open status, # bugs with Closed status
2012-05-31, 3, 1
2012-06-01, 2, 0
2012-06-02, 3, 2
我不知道如何超越此查询以获得我想要的内容:
select
DEFECT.SUBMITTED_DATE as "Opened",
count (DEFECT.SUBMITTED_DATE),
DEFECT.STATUS as "Status"
from
DEFECT
where
DEFECT.STATUS='Open' or DEFECT.STATUS='Fixed'
group by
DEFECT.SUBMITTED_DATE
寻找建议。
答案 0 :(得分:1)
在MySQL中,
SELECT DATE(DEFECT.SUBMITTED_DATE) as `DATE_SUBMITTED`,
SUM(CASE WHEN DEFECT.STATUS='Open' THEN 1 ELSE 0 END) `# bugs w/ Open status`,
SUM(CASE WHEN DEFECT.STATUS='Fixed' THEN 1 ELSE 0 END) `# bugs with Closed status`,
FROM DEFECT
GROUP BY DATE(DEFECT.SUBMITTED_DATE)
在TSQL中
SELECT CAST(DEFECT.SUBMITTED_DATE as DATE) as [DATE_SUBMITTED],
SUM(CASE WHEN DEFECT.STATUS='Open' THEN 1 ELSE 0 END) [# bugs w/ Open status],
SUM(CASE WHEN DEFECT.STATUS='Fixed' THEN 1 ELSE 0 END) [# bugs with Closed status],
FROM DEFECT
GROUP BY CAST(DEFECT.SUBMITTED_DATE as DATE)
答案 1 :(得分:1)
尝试:
SELECT DEFECT.SUBMITTED_DATE as DATE_SUBMITTED,
SUM(CASE WHEN DEFECT.STATUS = 'Open' THEN 1 ELSE 0 END) AS `# bugs w/ Open status`,
SUM(CASE WHEN DEFECT.STATUS = 'Fixed' THEN 1 ELSE 0 END) AS `# bugs w/ Open status`
FROM DEFECT
WHERE DEFECT.STATUS IN ('Open', 'Fixed')
GROUP BY DEFECT.SUBMITTED_DATE
答案 2 :(得分:0)
假设MS SQL Server:
SELECT DEFECT.SUBMITTED_DATE as [Date]
,SUM(CASE WHEN DEFECT.STATUS = 'Open' THEN 1 ELSE 0 END) AS number_open
,SUM(CASE WHEN DEFECT.STATUS = 'Fixed' THEN 1 ELSE 0 END) AS number_fixed
FROM DEFECT
WHERE DEFECT.STATUS IN ('Open' ,'Fixed')
GROUP BY DEFECT.SUBMITTED_DATE