如何解决SQL SELECT CASE WHEN 记录在组中最后
我是 SQL 的新手,但我已经能够通过一些快速的 Google 搜索计算出以下 SQL 代码。但是,我无法计算出最后一步。
SELECT CONVERT(DATE,ins_timestamp) AS 'Date',DATEPART(hh,ins_timestamp) AS 'Hour',DATEPART(mi,MAX(ins_timestamp) - MIN(ins_timestamp)) + 1 AS 'Minute',database.Terminal_no,database.Prod_code,Sum(database.Curr_boxes) AS 'Sum of Curr_Boxes'
FROM database
WHERE (database.From_ord_type=1) AND (database.ins_timestamp Between ? And ?)
GROUP BY CONVERT(DATE,ins_timestamp),database.Prod_code
union all
SELECT CONVERT(DATE,-Sum(database.Curr_boxes) AS 'Sum of Curr_Boxes'
FROM database
WHERE (database.to_status='VOID') and (database.ins_timestamp Between ? And ?)
GROUP BY CONVERT(DATE,database.Prod_code
对于会议记录,我尝试在 Select 部分使用类似于 IF 语句(我认为它是 Case 语句)的内容来查看记录是否是组中的最后一个。这是因为如果我们有多个产品在特定小时内运行,我可以为每个指定的分组指定多行。
如果是这种情况,那么我想添加一个数字,计算为 60 分钟减去分组中返回的记录的总分钟数到分组中的最后一分钟记录。请参见下面的示例:
日期 | 小时 | 分钟 | Terminal_no | 产品代码 | Curr_Boxes 的总和 |
---|---|---|---|---|---|
14/04/21 | 7 | 9 | 1 | 12S | 103 |
14/04/21 | 7 | 27 | 1 | 13S | 365 |
14/04/21 | 7 | 18 | 1 | 14S | 223 |
14/04/21 | 7 | 37 | 2 | 24S | 121 |
14/04/21 | 7 | 19 | 2 | 26S | 221 |
Terminal_no 1 第一个分组的总分钟数是 54。所以我想在分组的最后一条记录上加上 6 分钟 (60 - 54) 以显示 24。在最后一个分组中最后一分钟记录应该是 23 (= 19 + (60 - 56)) :
日期 | 小时 | 分钟 | Terminal_no | 产品代码 | Curr_Boxes 的总和 |
---|---|---|---|---|---|
14/04/21 | 7 | 9 | 1 | 12S | 103 |
14/04/21 | 7 | 27 | 1 | 13S | 365 |
14/04/21 | 7 | 24 | 1 | 14S | 223 |
14/04/21 | 7 | 37 | 2 | 24S | 121 |
14/04/21 | 7 | 23 | 2 | 26S | 221 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。