這是產生給定的開始和結束日期,你可以簡單地加入到你的名字的列表,以獲得您所需要的日期的常用方式:
insert into yourTable (...)
with names as (
select 'A' as name from dual union all
select 'B' as name from dual union all
select 'C' as name from dual
),
dates as (
select date' 2017-01-01' + level -1 as yourDate
from dual
connect by date' 2016-01-01' + level -1 <= date '2017-02-20'
)
select rownum, name, yourDate
from names
cross join dates
這有稍作修改以更好地適合您的專欄的數量和類型。它是如何工作的一個小例子:
with names as (
select 'A' as name from dual union all
select 'B' as name from dual union all
select 'C' as name from dual
),
dates as (
select date' 2017-02-18' + level -1 as yourDate,
level as lev
from dual
connect by date' 2017-02-18' + level -1 <= date '2017-02-20')
select rownum, name, yourDate, lev
from names
cross join dates
給出:
ROWNUM N YOURDATE LEV
---------- - --------- ----------
1 A 18-FEB-17 1
2 B 18-FEB-17 1
3 C 18-FEB-17 1
4 A 19-FEB-17 2
5 B 19-FEB-17 2
6 C 19-FEB-17 2
7 A 20-FEB-17 3
8 B 20-FEB-17 3
9 C 20-FEB-17 3
你使用MySQL或Oracle? (不要標記不涉及的產品。) – jarlh
A,B和C每一行都有一行?有什麼開始和結束時間? –
@jarlh我使用oracle。 – rkSinghania