0

我的问题由 3 个部分组成。

第一部分:
有没有办法根据值生成行?

例如:
我想根据每个家庭的family_members_count. 每张凭证都应该有一个唯一的 ID:

基表:

id name family_members_count
1  fadi 2
2  sami 3
3  ali  1

结果:

family_id     name      voucher_id 
1             fadi      121
1             fadi      122
2             sami      123
2             sami      124
2             sami      125
3             ali       126

第二部分:
可以控制voucher_id复合键吗?我希望voucher_id是这样的

(location)(cycle)(sequence 5 digits)

如果north = 08并且我们处于第二个周期,它应该是:

080200001
080200002

... 等等。

第三部分:
我需要 MS Access 2010 SQL 和 PostgreSQL 9.1 SQL 中的解决方案。

4

1 回答 1

1

问题 1

使用generate_series(). (在即将到来的 9.3 版本中寻找关键字LATERAL。)

SELECT id AS family_id
      ,name
      ,120 + generate_series(1, family_members_count) AS voucher_id 
FROM fam;

-> sqlfiddle 演示

问题2

SELECT id AS family_id
      ,name
      ,location 
       || to_char(cycle, 'FM00')
       || to_char(generate_series(1, family_members_count), 'FM00000')
          AS voucher_id 
FROM fam2;

-> sqlfiddle 演示

问题 3

抱歉,我在 10 年前从我的系统中移除了 MS Access,并且从未回头。其他人可能会填写。我怀疑它会那么简单。

于 2012-12-06T10:39:18.647 回答