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

サンプルデータ:

署名された日付| Organisation_id 01-01-2013
| 1
2013年2月1日| 1
2013年3月1日| 2

1週間で、organization_1には2つの署名があり、organization_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 に答える