SQL,基于变量从单个表中多次返回一行

时间:2013-04-24 15:13:22

标签: sql jasper-reports

我正在使用 iReport 创建一些盒子标签,并且需要将每个盒子标签的数据相乘。

我有2个参数,@ id表示记录ID,@typ表示所需的包类型

SELECT
     dr_id,
     dr_to_customer,
     dr_company_name,
     dr_address_0,
     dr_address_1,
     dr_address_2,
     dr_address_3,
     dr_postcode,
     dr_contact,
     dr_per_packs,
     dr_per_boxes,
     dr_per_pallets
FROM delreq
WHERE dr_id = @id AND ??timesTOrepeat?? = @typ (a string)

我需要根据包,盒子或托盘中的数量返回每行 x 次。

所以,我需要先根据@typ选择数量,然后找出如何将行相乘。

帮助。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用外部联接来实现此目的。试试这个:

SELECT
     dr_id,
     dr_to_customer,
     dr_company_name,
     dr_address_0,
     dr_address_1,
     dr_address_2,
     dr_address_3,
     dr_postcode,
     dr_contact,
     dr_per_packs,
     dr_per_boxes,
     dr_per_pallets
FROM delreq a, (select -1 id from all_objects where rownum < @typ) b
WHERE dr_id = @id AND a.dr_id(+) = b.id; 

我假设dr_id没有值-1也假设db是oracle [不确定是否与其他数据库相邻。