1

我希望有人可以帮助我解决我的问题。我需要在单个 SELECT 语句中创建以下内容(我们使用的系统在 Excel 中有一些处理单个 SELECT 的数据透视表):

我有一个 INL(发票行)表,其中包含很多字段,但重要的是日期。

INL_ID    DATE
  19    2004-03-15 00:00:00.000
  20    2004-03-15 00:00:00.000
  21    2004-03-15 00:00:00.000
  22    2004-03-16 00:00:00.000
  23    2004-03-16 00:00:00.000
  24    2004-03-16 00:00:00.000

现在,我还有一个通过 ID 字段与 INL 表相关的 ILD(发票行详细信息)。从第二个表中,我需要使用 scu_qty 字段来“重复”结果表中第一个表中的值。

我们需要的 ILD 表值是:

INL_ID    scu_qty
19          1
20          1
21          1
22          4
23          4

现在,对于 scu_qty,我需要重复第一个表的值,并为每条记录添加一天,scu_qty 是我们在 ILD 表中销售的服务的天数。

所以我需要得到类似的东西(我将显示你可以看到的 INL_ID 22 在 SCU_QTY 中的值不同于 1)。选择的结果必须给我类似的东西:

INL_ID  DATE
22  2004-03-15  0:00:00
22  2004-03-16  0:00:00
22  2004-03-17  0:00:00
22  2004-03-18  0:00:00

在这个信息中我只写了需要重复和计算的字段,当然我会需要更多的字段,但是会从INL表中重复,所以我不放,以免你混淆。

我希望有人能帮我解决这个问题,这份报告对我们来说非常重要。非常感谢提前

(对不起我的英语,那不是我的第一语言)

4

2 回答 2

0
select INL.INL_ID, `DATE`
from 
    INL
    inner join
    ILD on INL.INL_ID = ILD.INL_ID
    inner join (
        select 1 as qty union select 2 union select 3 union select 4
    ) s on s.qty <= ILD.scu_qty
order by INL.INL_ID

如果数量有点大,您将需要一个表格,而不是那个子选择。或者告诉您的 RDBMS 是什么,并且可以有更简单的方法。

于 2012-09-25T16:45:32.650 回答
0
SELECT INL_ID, scu_qty, CalculatedDATE ...  
FROM INL  
INNER JOIN ILD ON ...  
INNER JOIN SequenceTable ON SequenceTable.seqNo <= ILD.scu_qty
ORDER BY INL_ID, SequenceTable.seqNo

根据您的 SQL 风格,您将需要查找日期操作函数来执行
CalculatedDATE = {INL.DATE + SequenceTable.seqNo (days)}

于 2012-09-25T16:10:33.467 回答