Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Window Max()函数在代码中存在问题_Sql_Max_Window Functions - Fatal编程技术网

SQL Window Max()函数在代码中存在问题

SQL Window Max()函数在代码中存在问题,sql,max,window-functions,Sql,Max,Window Functions,我正在编写一个窗口函数,它应该创建一个月窗口,并且只抓取在该月窗口的更新标志字段中具有最大值的记录 我的窗口函数有问题,它仍然显示窗口中的所有结果,而它应该只显示最大值 我在下面留下了我的代码。请帮忙 选择 gb1.SKU_Id, gb1.1.1仓库编码, gb1.U开始时间, gb1.国家, tm.c445_月, tm.report_日期, gb1.U更新标志, maxgb1.update_标志在分区上按tm.yearmonth顺序按gb1.update_标志范围在无界的前一行和当前行之间作为

我正在编写一个窗口函数,它应该创建一个月窗口,并且只抓取在该月窗口的更新标志字段中具有最大值的记录

我的窗口函数有问题,它仍然显示窗口中的所有结果,而它应该只显示最大值

我在下面留下了我的代码。请帮忙

选择 gb1.SKU_Id, gb1.1.1仓库编码, gb1.U开始时间, gb1.国家, tm.c445_月, tm.report_日期, gb1.U更新标志, maxgb1.update_标志在分区上按tm.yearmonth顺序按gb1.update_标志范围在无界的前一行和当前行之间作为update_窗口, SUMG1.TOTAL_NEW_SALES_FORECAST作为dc_FORECAST 来自BAS_E2E_输出_全局_FCST gb1 内连接 选择 gb2.SKU_Id, gb2.2.1仓库编码, gb2.1开始的时间, gb2.1国家, gb2.1更新_标志, gb2.报告日期, tm1.1星期日, tm1.c445_月, tm1.1年月 从BAS_E2E_输出_全局_FCST为gb2 左连接 选择distinctweek\u日期作为周日期, c445_月, 年月 从生产库存到生产基础445个月对齐 按c445月、周、日、年、月分组 如gb2.report\u date=tm1.week\u date上的tm1 按SKU_Id分组, 仓库编码, 开始时, 国 更新_标志, 报告日期:, tm1.1星期日, tm1.c445_月, tm1.1年月 as tm 在gb1.report\u date=tm.week\u date上 和gb1.SKU_ID=tm.SKU_ID 和gb1.Warehouse_Code=tm.Warehouse_Code gb1.Period_Start=tm.Period_Start 和gb1.country=tm.country 分组 gb1.SKU_Id, gb1.1.1仓库编码, gb1.U开始时间, gb1.国家, tm.c445_月, tm.yearmonth, tm.report_日期, gb1.U更新标志 您当前使用的是MAX,窗口定义为上一行的每一行,包括当前行。因此,正确地说,它返回的每个记录的最大值可能会改变。也许您想在固定分区上设置最大值:

MAX(gb1.update_flag) OVER (PARTITION BY tm.yearmonth) AS update_window
顺便说一句,如果您确实打算在当前窗口逻辑中使用MAX,那么在大多数SQL版本中,ORDER By子句可以简化为:

MAX(gb1.update_flag) OVER (PARTITION BY tm.yearmonth ORDER BY gb1.update_flag) AS update_window

也就是说,默认范围在当前行之前是无界的,因此不必这样说。

这是有效的查询吗??我可以看到查询的问题。与您的问题无关,但是:distinct不是一个函数。它始终适用于“选择”列表中的所有列。用括号括住其中一列不会改变任何东西,也没有用。不同的a,b与不同的a,b或不同的a相同,b这是一个有效的查询,谢谢你的提示!