我希望有人可以帮我解决我的问题。我需要在单个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
现在,我还有一个ILD(发票行详细信息),它通过ID字段与INL表相关联。从第二个表中我将需要使用scu_qty字段来“重复”结果表中第一个的值。
我们需要的ILD表值是:
INL_ID scu_qty
19 1
20 1
21 1
22 4
23 4
现在,使用scu_qty我需要重复第一个表的值并且每个记录添加一天,scu_qty是我们在ILD表中销售的服务的天数。
所以我需要得到类似的内容(我将展示你可以看到的SCL_QTY中的值不同于1的INL_ID 22)。 select的结果必须给我一些:
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表中重复,所以我不会把它们放在一起让你不要混淆
我希望有人可以帮助我,这对我们这份报告非常重要。非常感谢提前
(抱歉我的英文,这不是我的第一语言)
答案 0 :(得分: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)}
答案 1 :(得分: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是什么,可以有一种更简单的方法。