Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><strong>UPDATED</strong></p> <pre><code>SELECT user_id, COALESCE(MIN(CASE WHEN 1 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `1`, COALESCE(MIN(CASE WHEN 2 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `2`, COALESCE(MIN(CASE WHEN 3 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `3`, COALESCE(MIN(CASE WHEN 4 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `4`, COALESCE(MIN(CASE WHEN 5 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `5`, COALESCE(MIN(CASE WHEN 6 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `6`, COALESCE(MIN(CASE WHEN 7 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `7`, COALESCE(MIN(CASE WHEN 8 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `8`, COALESCE(MIN(CASE WHEN 9 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `9`, COALESCE(MIN(CASE WHEN 10 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `10`, COALESCE(MIN(CASE WHEN 11 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `11`, COALESCE(MIN(CASE WHEN 12 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `12`, COALESCE(MIN(CASE WHEN 13 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `13`, COALESCE(MIN(CASE WHEN 14 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `14`, COALESCE(MIN(CASE WHEN 15 BETWEEN DAY(start_date) AND DAY(end_date) THEN event_id END), 0) `15` FROM ( SELECT id, event_id, CASE WHEN start_date &lt; '2013-03-01' THEN '2013-03-01' ELSE start_date END start_date, CASE WHEN end_date &gt; '2013-03-31' THEN '2013-03-31' ELSE end_date END end_date, user_id FROM events WHERE (start_date &gt;= '2013-03-01' AND end_date &lt;= '2013-03-31') OR (start_date &lt; '2013-03-01' AND end_date &gt; '2013-03-31') OR (start_date &lt; '2013-03-01' AND end_date BETWEEN '2013-03-01' AND '2013-03-31') OR (start_date BETWEEN '2013-03-01' AND '2013-03-31' AND end_date &gt; '2013-03-31') ) q GROUP BY user_id </code></pre> <p>Output:</p> <pre> | USER_ID | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ----------------------------------------------------------------------------- | 1 | 0 | 1 | 1 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | | 3 | 0 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | </pre> <p>Here is <strong><a href="http://sqlfiddle.com/#!2/79aa8/2" rel="nofollow">SQLFiddle</a></strong> demo</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload