有没有办法在sql的计算字段中调用GROUP BY作为变量?

问题描述 投票:0回答:1

我尝试按年份排序,因为在尝试按日期绘制图表时,我的计算字段不正确。我想如果我按照时间顺序排列日期,那么我的问题就会得到解决,但我不知道该怎么做。我的 dateIn 字段的格式为“7/10/2022”


SELECT 
  i.dateIn, 
  i.productId, 
  i.docNumber,
  b.batchTotalCount,
  i.productInCount,
  b.batchTotalCount - COALESCE(SUM(i.productInCount) OVER(PARTITION BY i.productId,i.docNumber ORDER BY i.productInDate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),0) AS CurrentQuantity_warehouse

FROM 
  product_batch  as b
   JOIN product_in AS i ON i.productId = b.productId AND i.docNumber = b.docNumber

ORDER BY year(i.dateIn),month(i.dateIn),day(i.dateIn) asc

我尝试将长订单按字段放在最后一行,但没有成功。如果有帮助,我正在使用 Azure Databricks。

sql sql-order-by aggregate-functions azure-databricks sql-date-functions
1个回答
0
投票

SUM(i.productInCount) OVER (PARTITION BY i.productId, i.docNumber
                                ORDER BY i.productInDate)

您正在建立一个运行总计。但正如你

ORDER BY year(i.dateIn), month(i.dateIn), day(i.dateIn) ASC

或者只是

ORDER BY i.dateIn

就此而言,你的结果看起来会很混乱。

通常,您希望在结果行中显示相同的顺序,以便您看到总数不断增加:

ORDER BY i.productId, i.docNumber, i.productInDate
© www.soinside.com 2019 - 2024. All rights reserved.