2014-09-21 84 views
0

你能幫我解決以下問題: 我有table1有5個字段:ProductID,price,startWeek,endWeek,numWeeks;MS Access 2010:根據1個價格記錄創建多個星期記錄

xx ProdID xx price xx startWeek xx endWeek xx NumWeeks 
    Prod1  $15  1   3   3 
    Prod2  $20  2   4   3 

我需要創建另一個表2,按ProductID每週錄製的價格,讓每個產品都將會有記錄的數量每個星期,這樣的:

Prod1 week1 $15, 
Prod1 week2 $15 
Prod1 week3 $15 
Prod2 week2 $20 
Prod2 week3 $20 
Prod3 week4 $20 

提前非常感謝

+0

歡迎堆棧溢出。這個問題似乎是無關緊要的,因爲堆棧溢出不是代碼寫入服務。請[編輯]你的問題來詳細描述你的***代碼所包含的問題,並且包含一個[* minimal * example](http://stackoverflow.com/help/mcve)。 – 2014-09-21 21:43:34

回答

0

TEST SQLFiddle

首先,我將創建一個表數週。它通常被稱爲統計表或數字表。

你可以通過創建一個VBA,但我wanto簡單地保持(長,但簡單地)

,必須運行此代碼只是一個時間。

create table weeks(weekNumber int, weekName varchar(10)) 
insert into weeks 
select 1, 'week1' 
union all 
select 2, 'week2' 
union all 
select 3, 'week3' 
union all 
select 4, 'week4' 
union all 
select 5, 'week5' 
union all 
select 6, 'week6' 
union all 
select 7, 'week7' 
union all 
select 8, 'week8' 
union all 
select 9, 'week9' 
union all 
select 10, 'week10' 
union all 
select 11, 'week11' 
union all 
select 12, 'week12' 
union all 
select 13, 'week13' 
union all 
select 14, 'week14' 
union all 
select 15, 'week15' 
union all 
select 16, 'week16' 
union all 
select 17, 'week17' 
union all 
select 18, 'week18' 
union all 
select 19, 'week19' 
union all 
select 20, 'week20' 
union all 
select 21, 'week21' 
union all 
select 22, 'week22' 
union all 
select 23, 'week23' 
union all 
select 24, 'week24' 
union all 
select 25, 'week25' 
union all 
select 26, 'week26' 
union all 
select 27, 'week27' 
union all 
select 28, 'week28' 
union all 
select 29, 'week29' 
union all 
select 30, 'week30' 
union all 
select 31, 'week31' 
union all 
select 32, 'week32' 
union all 
select 33, 'week33' 
union all 
select 34, 'week34' 
union all 
select 35, 'week35' 
union all 
select 36, 'week36' 
union all 
select 37, 'week37' 
union all 
select 38, 'week38' 
union all 
select 39, 'week39' 
union all 
select 40, 'week40' 
union all 
select 41, 'week41' 
union all 
select 42, 'week42' 
union all 
select 43, 'week43' 
union all 
select 44, 'week44' 
union all 
select 45, 'week45' 
union all 
select 46, 'week46' 
union all 
select 47, 'week47' 
union all 
select 48, 'week48' 
union all 
select 49, 'week49' 
union all 
select 50, 'week50' 
union all 
select 51, 'week51' 
union all 
select 52, 'week52' 
union all 
select 53, 'week53' 
union all 
select 54, 'week54' 
union all 
select 55, 'week55' 

然後將溶液很簡單:

1創建表2,只運行一次

create table table2(ProductID varchar(10), weekName varchar(10), price int) 

做的工作

insert into table2 
    select a.ProductID, w.weekName, a.price 
    from table1 a inner join weeks w 
    on a.startWeek<=w.weekNumber and a.endWeek>=w.weekNumber 

得到的結果

select * from table2 

結果:

ProductID weekName price 
Prod1  week1  15 
Prod1  week2  15 
Prod1  week3  15 
Prod2  week2  20 
Prod2  week3  20 
Prod2  week4  20 

TEST SQLFiddle

+0

我沒有檢查它,讓我知道如果它需要任何調整http://www.sqlfiddle.com/#!3/b32b6/1 – Horaciux 2014-09-25 00:40:22

+0

@zosha你有沒有嘗試過這種解決方案? – Horaciux 2014-09-26 01:40:05