我有一个名为Z_N_FullRetailTable的简单表,该表具有Item_Number,Color_Code和Retail Price。
我手动创建了此表。但是,有时我们将商品添加到集合中,因此我需要将此表更新为新商品及其零售价格。
我想做的是对我们的Orders表运行查询。查看“零售”表中不存在的所有已订购商品,并将其以其首个销售价作为零售价添加到零售表中。
这是我写的查询。它查找所有已订购的商品,零售表中已存在的商品除外。
package no.magnus.controller;
@Controller("HomeController")
public class HomeController {
// for the very first start
// RequestMapping can be replaced with GetMapping
@GetMapping("/")
public ModelAndView index() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
}
我如何将其转变为每天运行一次的工作?
还有,有什么方法可以做到的,所以它是从2019年的订单中获得的最高价格,而不是所有时间的订单中的最高价格。但是,如果该商品没有在2019年订购,那么它将返回并从2018年的订单中获得最高价格,依此类推。还是会太复杂?
答案 0 :(得分:3)
个人说明:您应该养成在代码中使用架构的习惯,例如:
From Order_Detail O
应该是
From dbo.Order_Detail O
关于“我如何使这项工作每天运行一次”问题:
查询完成后,我会将其转换为存储过程。然后,从SSMS内,在SQL Server代理下,然后是“作业”-右键单击“作业”,再单击“新建作业”。 在常规标签中:
在“步骤”标签中:
在“计划”标签中
对于您的“获取最近一年的最高价格”之类的问题,我会这样做:
; 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