찾다

 >  Q&A  >  본문

두 날짜 사이의 모든 달에 대한 동적 테이블 생성

<p>내가 가진 모든 정보는 다음과 같습니다</p> <테이블 클래스="s-테이블"> <머리> <tr> 이름 <번째>INT_VALUE <th>开始</th> <일>END</일> </tr> </머리> <본문> <tr> <td>일신</td> 100 <td>2013-11-16</td> <td>2014-11-16</td> </tr> </tbody> </테이블> <p>目标是输如下:</p> <테이블 클래스="s-테이블"> <머리> <tr> <th>이름</th> <번째>INT_VALUE <th>开始</th> <일>END</일> <일>间隔</일> </tr> </머리> <본문> <tr> <td>일신</td> 100 <td>2013-11-16</td> <td>2014-11-16</td> 2013년 11월 11일 </tr> <tr> <td>일신</td> 100 <td>2013-11-16</td> <td>2014-11-16</td> <td>2013년 12월</td> </tr> <tr> <td>일신</td> 100 <td>2013-11-16</td> <td>2014-11-16</td> 2014년 1월 </tr> <tr> <td>일신</td> 100 <td>2013-11-16</td> <td>2014-11-16</td> <td>2014년 2월</td> </tr> </tbody> </테이블> <p>저희는 이 앱을 사용하는 데 동의하지 않습니다. START와 END가 일치하지 않는 사용 방식입니다.</p> <pre class="brush:php;toolbar:false;">SELECT START, 달력, COUNT(1) FROM table1 AS t1 RIGHT JOIN (SELECT row_number() OVER (ORDER BY SEQ4()) AS MONTHS , TO_DATE(DATEADD(MONTH, MONTHS, '2019-05-01')) AS 캘린더 FROM TABLE(GENERATOR(행 개수=>80))) ON t1.START = 달력 1, 2로 그룹화 2, 1로 주문하세요 ;</pre> <p>这里的目标是将int值与范围开始到结束の间的每个月份关联起来。</p>
P粉663883862P粉663883862474일 전581

모든 응답(2)나는 대답할 것이다

  • P粉924915787

    P粉9249157872023-08-29 11:21:21

    이동 数字范围 자체 CTE로 이동하여 이제 80개 숫자(아마도 더 클 수 있음)의 큰 목록을 갖게 되었습니다.

    그런 다음 시작/끝 사이의 개월 수를 찾아 같은 수의 행에 조인합니다. 그런 다음 수학을 수행하여 범위를 선택 항목으로 변환합니다.

    으아악

    또 다른 옵션은 장기 날짜 테이블을 만드는 것입니다

    으아악

    그런 다음 BETWEEN을 사용하여 (시작, 끝) 범위에 포함된 값을 가져오며 이는 다음과 같습니다.

    으아악

    회신하다
    0
  • P粉567112391

    P粉5671123912023-08-29 00:50:09

    으아악

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=bdd028a7755fdcb8296df2301baeb295

    월 앞에 0이 표시되는 것을 원하지 않으면 '%c-%Y' 패턴을 사용하세요.

    회신하다
    0
  • 취소회신하다