首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL如何创建一个每天运行一次并根据缺少的内容更新表的作业?

SQL如何创建一个每天运行一次并根据缺少的内容更新表的作业?
EN

Stack Overflow用户
提问于 2019-08-05 20:59:02
回答 1查看 116关注 0票数 1

我有一个名为Z_N_FullRetailTable的简单表,它有一个Item_Number、Color_Code和零售价格。

我手动创建了这个表。然而,有时我们会添加项目到我们的收集,所以我需要这个表更新与新的项目和它的零售价格。

我想要做的就是对我们的Orders表运行一个查询。查看在Retail表中不存在的所有已订购的商品,并将它们添加到零售表中,并将其作为零售价加上它的第一个销售价格。

这是我写的查询。它会找到除零售表中已经存在的项目之外的所有已订购的商品。

代码语言:javascript
复制
Select LTRIM(RTRIM(TT.Item_Number)) Sku, LTRIM(RTRIM(TT.Color_Code)), 
TT.Retail Retail
From 
(
Select Distinct 
Item_Number
,Color_Code
From Order_Detail O
Where O.Customer_Number = 'Ecom2x' AND ISNUMERIC(O.Customer_Purchse_Order_Number) <> 0 

EXCEPT

Select 
Z.Sku
,Z.Color
From Z_N_FullRetailTable Z
) T --Gets List of Missing SKUs

LEFT JOIN
(
Select Distinct 
Item_Number
,Color_Code
,MAX(O.Price) OVER (Partition by O.Item_Number) Retail
From Order_Detail O
Where O.Customer_Number = 'Ecom2x' AND ISNUMERIC(O.Customer_Purchse_Order_Number) <> 0 
) TT ON T.Item_Number = TT.Item_Number and T.Color_Code = TT.Color_Code

我怎么能把它变成一天一次的工作呢?

另外,有没有办法让它从2019年的订单中得到它的最高价格,而不是所有时候的订单。但如果该商品不是在2019年订购的,那么它就会退回,并从2018年的订单中获得最高价格,以此类推。还是太复杂了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-05 22:15:31

个人注意:您应该养成在代码中使用模式的习惯,例如:

代码语言:javascript
复制
From Order_Detail O 

应该是

代码语言:javascript
复制
From dbo.Order_Detail O

对于你的“如何使这成为一项每天运行一次的工作”的问题:

一旦您完善了查询,我就会将其转换为存储过程。然后,在SSMS内部,在Server代理下,然后在作业-右键单击职务,单击新作业。在“一般”标签中:

  • 把工作命名为描述性的
  • 将所有者设为“sa”

在Steps选项卡中:

  • 点击新..。
  • 给步骤命名
  • 选择新存储过程存在的数据库。
  • 在命令文本区域中,键入命令: EXEC dbo.StoredProcedureName
  • 单击Ok

附表中的标签

  • 点击新..。
  • 列出时间表并选择频率和时间选项。
  • 命中Ok

对于你的“按最近一年获得最高价格”这样的问题,我会这样做:

代码语言:javascript
复制
; WITH prices AS (SELECT Item_Number, Price
 , rn = ROW_NUMBER() OVER (Partition by Item_Number ORDER BY Year(OrderDate?) DESC, Price DESC))
SELECT * 
FROM prices
WHERE rn = 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57366026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档