Hasilkan jadual dinamik semua bulan antara dua tarikh
P粉663883862
2023-08-28 12:44:46
<p>我有一个如下所示的表:</p>
<table class="s-table">
<kepala>
<tr>
<th>姓名</th>
<th>INT_VALUE</th>
<th>开始</th>
<th>END</th>
</tr>
</kepala>
<tbody>
<tr>
<td>一个</td>
<td>100</td>
<td>2013-11-16</td>
<td>2014-11-16</td>
</tr>
</tbody>
</table>
<p>目标是输出如下:</p>
<table class="s-table">
<kepala>
<tr>
<th>姓名</th>
<th>INT_VALUE</th>
<th>开始</th>
<th>END</th>
<th>间隔</th>
</tr>
</kepala>
<tbody>
<tr>
<td>一个</td>
<td>100</td>
<td>2013-11-16</td>
<td>2014-11-16</td>
<td>11-2013</td>
</tr>
<tr>
<td>一个</td>
<td>100</td>
<td>2013-11-16</td>
<td>2014-11-16</td>
<td>2013年12月</td>
</tr>
<tr>
<td>一个</td>
<td>100</td>
<td>2013-11-16</td>
<td>2014-11-16</td>
<td>1-2014</td>
</tr>
<tr>
<td>一个</td>
<td>100</td>
<td>2013-11-16</td>
<td>2014-11-16</td>
<td>2014年2月</td>
</tr>
</tbody>
</table>
<p>我已经开始使用这个。但是我不确定如何使用表中的START和END日期来确定是我不确定如何使用表中的START和END日期来确定乡计算的始和结束。</p>
<pre class="brush:php;toolbar:false;">PILIH MULA, kalendar, COUNT(1)
DARI jadual1 AS t1
KANAN SERTAI (PILIH row_number() OVER (ORDER BY SEQ4()) SEBAGAI BULAN
, TO_DATE(DATEADD(BULAN, BULAN, '2019-05-01')) SEBAGAI kalendar
DARI JADUAL(PENJANA(bilangan baris=>80)))
HIDUP t1.MULA = kalendar
KUMPULAN OLEH 1, 2
PESANAN OLEH 2, 1
;</pra>
<p>这里的目标是将int值与范围开始到结束之间的每个月份关联起来。</p>
Berpindah
数字范围
ke dalam CTE sendiri untuk memisahkan perkara, kami kini mempunyai senarai besar 80 nombor (mungkin lebih besar).Kemudian kami mencari bilangan bulan antara mula/akhir dan menyertai bilangan baris yang sama. Kemudian lakukan matematik untuk menukar julat kepada pilihan:
Pilihan lain ialah membina jadual tarikh jarak jauh
Kemudian kami menggunakan ANTARA untuk mendapatkan nilai yang disertakan dalam julat (mula, tamat), yang menjadi:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=bdd028a7755fdcb8296df2301baeb295
Jika anda tidak mahu bulan itu mempunyai sifar pendahuluan, gunakan corak
'%c-%Y'
.