【发布时间】:2013-06-25 07:19:43
【问题描述】:
我有一个 SQL 查询,它只从表中选择四列,并向其中添加另一列,这将是函数的结果。函数是生成日期,它接受一个数字作为参数,并将其添加到 SYSDATE 以生成未来的日期:
CREATE OR REPLACE FUNCTION future(p_day NUMBER)
RETURN DATE
IS
--
v_date DATE;
--
BEGIN
--
v_date := SYSDATE + p_day;
RETURN v_date;
--
END;
SQL 列选择的特点是:
- 前三列是唯一的组合,这是通过分组来完成的 SELECT a, b, c FROM table GROUP BY a, b, c;
- 第四列 (h) 是数值,我只是说 1-10
所以目前在原始表中,a、b、c 的每个唯一组合都有 1 到 10
分配:
-+----+----+----+----+-
| a | b | c | h | <----Column names
-+----+----+----+----+-
| a1 | b1 | c1 | 1 |
-+----+----+----+----+-
| a1 | b1 | c1 | 2 |
-+----+----+----+----+-
| a1 | b1 | c1 | 3 |
-+----+----+----+----+-
| a1 | b1 | c1 | 4 |
-+----+----+----+----+-
: : : :
: : : :
-+----+----+----+----+-
| a1 | b1 | c1 | 9 |
-+----+----+----+----+-
| a1 | b1 | c1 | 10 |
-+----+----+----+----+-
| a1 | b1 | c2 | 1 |
-+----+----+----+----+-
| a1 | b1 | c2 | 2 |
-+----+----+----+----+-
: : : :
: : : :
所以现在我必须使用我的函数(或任何其他将完成相同工作的方法)在列 c 和 h 之间添加日期,这将是 7 天后的日期,并且该列应该更改,以便在那里的每一天是一个唯一的组合和 10 个数值。这意味着如果有 50 个 a、b、c 组合,查询的行将是 50*7*10 = 3500。现在我不知道如何插入 7 天。我想过 FOR i IN 1..7 LOOP 但仍然无法弄清楚。 请给我一些建议
【问题讨论】: