【问题标题】:How to add a column as a result of date function in PL/SQL?如何在 PL/SQL 中添加列作为日期函数的结果?
【发布时间】: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 列选择的特点是:

  1. 前三列是唯一的组合,这是通过分组来完成的 SELECT a, b, c FROM table GROUP BY a, b, c;
  2. 第四列 (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 但仍然无法弄清楚。 请给我一些建议

【问题讨论】:

    标签: sql date plsql insert


    【解决方案1】:

    看看this。 这是一个示例查询示例。

    select Temp.*,to_char(adate,'dd/MM/yyyy') d from Temp,
    (
    SELECT (SYSDATE + ROWNUM -1) adate
      FROM DUAL CONNECT BY ROWNUM <= 7
    ) T
    order by Temp.A,Temp.B,Temp.C,Temp.h,T.adate
    

    【讨论】:

    • 是的,结果正是需要的,谢谢,但是有没有一般的日期生成方式,例如,如果我被要求生成接下来 100 天的结果,那么我有键入 100 次 sysdate + i...?
    • @DilshatAbduwalli 现在再次检查我的 Ans。我已经根据给定的详细信息进行了更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多