我有一系列要做的事情,想要打破它,让它在人与人之间分开,以及他们一天可以做些什么。这个数据在2个表中
所以我有2个表,第一个是要做的事情列表 表1
task
-----------
job a
job b
job c
...
job z
表2 是一个人员列表以及他们每天可以做些什么
person | date | amount
------- -------- ----------
Mike 05/23/12 3
Paul 05/23/12 2
Mike 05/24/12 1
Paul 05/24/12 3
...
Mike 06/01/12 6
Paul 06/01/12 9
所以我想要的是得到像
这样的东西Order_id| Person |date |task
-------- --------- --------- -----------
1 Mike 05/23/12 job a
2 Mike 05/23/12 job b
3 Mike 05/23/12 job c
4 Paul 05/23/12 job d
5 Paul 05/23/12 Job e
6 Mike 05/24/12 job f
7 Paul 05/24/12 job g
...
26 Mike 06/01/12 job z
我不知道我会怎么做。我在Postgres 8.4工作
答案 0 :(得分:0)
使用另一个表:table3,其中包含整数1到(最大数量)的序列,您可以查询它。
table3的样本
seq
-----
1
2
3
4
...
9
10
11
...
查询样本
select
sub1.Order_id,
sub2.Person,
sub2.date,
sub1.task
from
(
select
row_number() over(order by task) as Order_id,
task
from table1
order by task
) as sub1
inner join
(
select
row_number() over(order by table2.date, table2.person) as Order_id,
table2.person,
table2.date,
table2.amount,
table3.seq
from table2
inner join table3
on table2.amount >= table3.seq
) as sub2
on sub1.Order_id = sub2.Order_id
请注意,自PostgreSQL版本8.4以来,row_number()
等窗口函数可用。