0

我正在使用此查询进行每周报告,但找不到这样的方法

week_number | week_startdate | organization_1 | organization_2
---------------------------------------------------------------
1           | 2013-01--05    |count(date) like 4,24,etc_ | count(date) like 4,24,etc_

SQL:

SELECT WEEK(signed_date) AS week_name, signed_date AS Week_Starting,
       YEAR(signed_date), WEEK(signed_date), COUNT(*)
FROM business
WHERE YEAR(signed_date) = YEAR(CURDATE())
GROUP BY CONCAT(YEAR(signed_date), '/', WEEK(signed_date))
ORDER BY YEAR(signed_date), WEEK(signed_date

样本数据:

签名日期 | 组织
_id 01-01-2013 | 1
02-01-2013 | 1
03-01-2013 | 2

在 1 周内,组织_1 有 2 个签名,组织_2 有 1 个签名。

4

1 回答 1

2

您应该在 count 或 sum 中使用 case:

SELECT WEEK(signed_date) AS week_name, signed_date AS Week_Starting,
       YEAR(signed_date), WEEK(signed_date),
SUM(CASE  WHEN organization_id=1 THEN 1 ELSE 0 END) as organization_1,
SUM(CASE WHEN organization_id=2 THEN 1 ELSE 0 END) as organization_2
FROM business
WHERE YEAR(signed_date) = YEAR(CURDATE())
GROUP BY CONCAT(YEAR(signed_date), '/', WEEK(signed_date))
ORDER BY YEAR(signed_date), WEEK(signed_date);

http://sqlfiddle.com/#!2/587ad/3

于 2013-03-03T00:25:34.987 回答