首页 > 解决方案 > 每日剧本斗争

问题描述

我正在尝试将数据插入daily_stats具有以下行的表中

submission_date
message_class
channel
data_centre
line_of_business
submission_vol

Payld_Data.Received_Messages表中,但我希望我的脚本仅在脚本运行的那一天每天插入数据以获取消息

我在下面写了一些东西,但是我如何添加日期才能只添加每天收到的消息?

insert into daily_stats values (trunc(submission_date), Message_Class, Channel, data_centre, Line_Of_Business, submission_vol(*))
Select trunc(A.submission_date), A.Message_Class, A.Channel, A.Data_Centre, B.Line_Of_Business, submission_vol(*) 
From Payld_Data.Received_Messages A, Recon_Data.Reconciliation_Control B
Where A.Conversation_Id = B.Conversation_Id
group by Trunc(A.Creation_Timestamp), A.Message_Class, A.Channel, A.Data_Centre, B.Line_Of_Business;

标签: sqloracle11g

解决方案


我在这里猜测了一下,因为您的问题不是很清楚,您Submission_Date应该是当前日期(您运行此 INSERT 语句的日期。如果是这种情况,那么以下应该有效:

insert into daily_stats (submission_date, Message_Class, Channel, data_centre, Line_Of_Business, submission_vol(*))
Select CURRENT_DATE, A.Message_Class, A.Channel, A.Data_Centre, B.Line_Of_Business, submission_vol(*) 
From Payld_Data.Received_Messages A, Recon_Data.Reconciliation_Control B
Where A.Conversation_Id = B.Conversation_Id
group by Trunc(A.Creation_Timestamp), A.Message_Class, A.Channel, A.Data_Centre, B.Line_Of_Business;

这里最大的变化是

  1. 用于CURRENT_DATE获取当前日期
  2. 格式INSERT INTO <table> (List, Of, Fields)是写这个的正确方法,注意在VALUE字段列表之前没有。
  3. 我删除了TRUNC()字段列表中的函数,因为这纯粹是字段列表,不允许转换/逻辑。它位于SELECT查询的一部分,您可以在其中执行您的Trunc()逻辑和其他逻辑。该INSERT部分仅用于指定我们要插入哪个表以及哪些字段(及其顺序)。

您可以查看手册中的页面以查看Insert... Select正确的语法。


推荐阅读