문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:calendar_query [2025/04/09 20:52] carlito76 |
기술문서:레퍼런스:쿼리:응용:calendar_query [2026/06/19 17:13] (현재) carlito76 |
||
|---|---|---|---|
| 줄 5: | 줄 5: | ||
| ====== Calendar Query ====== | ====== Calendar Query ====== | ||
| + | |||
| + | <note tip> | ||
| + | 최소 지원 버전은 약간의 차이가 있을 수 있습니다.\\ | ||
| + | - MySQL/ | ||
| + | - MSSQL, Oracle/ | ||
| + | </ | ||
| ===== MySQL/ | ===== MySQL/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- MySQL 5.0.1 이상/ | + | /* |
| + | MySQL 5.0.1 이상/ | ||
| + | */ | ||
| SELECT | SELECT | ||
| - | MIN(CASE WHEN week = 1 THEN dt END) AS sun | + | MAX(CASE WHEN week = 1 THEN dt END) AS sun |
| - | , MIN(CASE WHEN week = 2 THEN dt END) AS mon | + | , MAX(CASE WHEN week = 2 THEN dt END) AS mon |
| - | , MIN(CASE WHEN week = 3 THEN dt END) AS tue | + | , MAX(CASE WHEN week = 3 THEN dt END) AS tue |
| - | , MIN(CASE WHEN week = 4 THEN dt END) AS wed | + | , MAX(CASE WHEN week = 4 THEN dt END) AS wed |
| - | , MIN(CASE WHEN week = 5 THEN dt END) AS thu | + | , MAX(CASE WHEN week = 5 THEN dt END) AS thu |
| - | , MIN(CASE WHEN week = 6 THEN dt END) AS fri | + | , MAX(CASE WHEN week = 6 THEN dt END) AS fri |
| - | , MIN(CASE WHEN week = 7 THEN dt END) AS sat | + | , MAX(CASE WHEN week = 7 THEN dt END) AS sat |
| FROM | FROM | ||
| (SELECT | (SELECT | ||
| 줄 26: | 줄 34: | ||
| (SELECT | (SELECT | ||
| DATE_ADD(a, | DATE_ADD(a, | ||
| + | , a | ||
| FROM | FROM | ||
| (SELECT | (SELECT | ||
| 줄 42: | 줄 51: | ||
| ) cal | ) cal | ||
| WHERE | WHERE | ||
| - | dt <= LAST_DAY(dt) | + | dt <= LAST_DAY(a) |
| ) cal | ) cal | ||
| GROUP BY | GROUP BY | ||
| 줄 53: | 줄 62: | ||
| ===== MSSQL ===== | ===== MSSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- MSSQL 2000 이상 | + | /* |
| + | MSSQL 2000 이상 | ||
| + | */ | ||
| SELECT | SELECT | ||
| - | MIN(CASE WHEN week = 1 THEN dt END) AS sun | + | MAX(CASE WHEN week = 1 THEN dt END) AS sun |
| - | , MIN(CASE WHEN week = 2 THEN dt END) AS mon | + | , MAX(CASE WHEN week = 2 THEN dt END) AS mon |
| - | , MIN(CASE WHEN week = 3 THEN dt END) AS tue | + | , MAX(CASE WHEN week = 3 THEN dt END) AS tue |
| - | , MIN(CASE WHEN week = 4 THEN dt END) AS wed | + | , MAX(CASE WHEN week = 4 THEN dt END) AS wed |
| - | , MIN(CASE WHEN week = 5 THEN dt END) AS thu | + | , MAX(CASE WHEN week = 5 THEN dt END) AS thu |
| - | , MIN(CASE WHEN week = 6 THEN dt END) AS fri | + | , MAX(CASE WHEN week = 6 THEN dt END) AS fri |
| - | , MIN(CASE WHEN week = 7 THEN dt END) AS sat | + | , MAX(CASE WHEN week = 7 THEN dt END) AS sat |
| FROM | FROM | ||
| (SELECT | (SELECT | ||
| 줄 93: | 줄 104: | ||
| ===== Oracle/ | ===== Oracle/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- Oracle 8i 이상/ | + | /* |
| + | Oracle 8i 이상/ | ||
| + | */ | ||
| SELECT | SELECT | ||
| - | MIN(DECODE(week, | + | MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| - | , MIN(DECODE(week, | + | , MAX(DECODE(week, |
| FROM | FROM | ||
| (SELECT | (SELECT | ||
| 줄 111: | 줄 124: | ||
| (SELECT | (SELECT | ||
| TRUNC(SYSDATE, | TRUNC(SYSDATE, | ||
| - | -- TO_DATE(' | + | -- TO_DATE(' |
| FROM | FROM | ||
| DUAL) cal | DUAL) cal | ||
| 줄 126: | 줄 139: | ||
| ===== PostgreSQL ===== | ===== PostgreSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- PostgreSQL 8.0 이상 | + | /* |
| + | PostgreSQL 8.0 이상 | ||
| + | */ | ||
| SELECT | SELECT | ||
| - | MIN(CASE WHEN week = 0 THEN dt END) AS sun | + | MAX(CASE WHEN week = 0 THEN dt END) AS sun |
| - | , MIN(CASE WHEN week = 1 THEN dt END) AS mon | + | , MAX(CASE WHEN week = 1 THEN dt END) AS mon |
| - | , MIN(CASE WHEN week = 2 THEN dt END) AS tue | + | , MAX(CASE WHEN week = 2 THEN dt END) AS tue |
| - | , MIN(CASE WHEN week = 3 THEN dt END) AS wed | + | , MAX(CASE WHEN week = 3 THEN dt END) AS wed |
| - | , MIN(CASE WHEN week = 4 THEN dt END) AS thu | + | , MAX(CASE WHEN week = 4 THEN dt END) AS thu |
| - | , MIN(CASE WHEN week = 5 THEN dt END) AS fri | + | , MAX(CASE WHEN week = 5 THEN dt END) AS fri |
| - | , MIN(CASE WHEN week = 6 THEN dt END) AS sat | + | , MAX(CASE WHEN week = 6 THEN dt END) AS sat |
| FROM | FROM | ||
| (SELECT | (SELECT | ||
| 줄 163: | 줄 178: | ||
| ; | ; | ||
| </ | </ | ||
| + | |||
| + | {{tag>" | ||