不是最乾淨的查詢......但這是你在找什麼?
SET @year := 2013;
SELECT
CASE WHEN CONCAT(@year, '-01-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Jan,
CASE WHEN CONCAT(@year, '-02-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Feb,
CASE WHEN CONCAT(@year, '-03-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Mar,
CASE WHEN CONCAT(@year, '-04-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Apr,
CASE WHEN CONCAT(@year, '-05-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END May,
CASE WHEN CONCAT(@year, '-06-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Jun,
CASE WHEN CONCAT(@year, '-07-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Jul,
CASE WHEN CONCAT(@year, '-08-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Aug,
CASE WHEN CONCAT(@year, '-09-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Sep,
CASE WHEN CONCAT(@year, '-10-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Oct,
CASE WHEN CONCAT(@year, '-11-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END Nov,
CASE WHEN CONCAT(@year, '-12-01') BETWEEN date_ini AND date_end THEN CONCAT('id', id) END `Dec`
FROM
policies
WHERE
date_end >= CONCAT(@year, '-01-01')
AND
date_ini <= CONCAT(@year, '-12-01')
但我認爲通常使用代碼來表示結果會更好,例如,與PHP,而不是使用MySQL查詢。
小提琴是here。
編輯
而這個查詢是總和:
SET @year := 2013;
SELECT
SUM(CONCAT(@year, '-01-01') BETWEEN date_ini AND date_end) Jan,
SUM(CONCAT(@year, '-02-01') BETWEEN date_ini AND date_end) Feb,
SUM(CONCAT(@year, '-03-01') BETWEEN date_ini AND date_end) Mar,
SUM(CONCAT(@year, '-04-01') BETWEEN date_ini AND date_end) Apr,
SUM(CONCAT(@year, '-05-01') BETWEEN date_ini AND date_end) May,
SUM(CONCAT(@year, '-06-01') BETWEEN date_ini AND date_end) Jun,
SUM(CONCAT(@year, '-07-01') BETWEEN date_ini AND date_end) Jul,
SUM(CONCAT(@year, '-08-01') BETWEEN date_ini AND date_end) Aug,
SUM(CONCAT(@year, '-09-01') BETWEEN date_ini AND date_end) Sep,
SUM(CONCAT(@year, '-10-01') BETWEEN date_ini AND date_end) Oct,
SUM(CONCAT(@year, '-11-01') BETWEEN date_ini AND date_end) Nov,
SUM(CONCAT(@year, '-12-01') BETWEEN date_ini AND date_end) `Dec`
FROM
policies
WHERE
date_end >= CONCAT(@year, '-01-01')
AND
date_ini <= CONCAT(@year, '-12-01')
小提琴here。
fthiella我如何計算每個月?例如計算所有在1月,二月,三月...你的代碼是正確的,但我也需要。你能幫我解決這個問題嗎? –
@CarlitosMorales請看我編輯的答案。但你確定jan和feb應該給3嗎?我得到2,如果我理解你的邏輯,它應該是正確的... – fthiella
Ups抱歉,我的不好,你是對的我會在幾分鐘內檢查你的代碼:) –