繁体   English   中英

Function 将从 SQL 表中获取 select 值并根据另一列值进行求和

[英]Function that will select value from SQL table and do a sum based on another column value

我需要一个查询来总结表中的hours 需要选择哪些时间取决于Start Date列。 如果开始日期是过去的,则应采用Remaining Hours ,如果是未来的日期,则应采用Budgeted Hours

开始日期 预算时间 剩余时间
2022 年 1 月 1 日 15 3个
2022 年 2 月 1 日 12 0
2022 年 3 月 1 日 14 6个
2022 年 4 月 1 日 15 13

在上面的示例中,总小时数应为 24 (3 + 0 + 6 + 15)。

为此,您不需要 function,只需要一个CASE表达式:

DECLARE @now datetime = GETDATE();

SELECT SUM
(
  CASE WHEN [Start Date] < @now 
  THEN [Remaining Hours]
  ELSE [Budgeted Hours] 
  END
)
FROM dbo.tablename;

我们可以使用 function case

 create table ops( startDate date, Budgeted int, Remaining int);
 insert into ops values ('2022-01-01',15,3), ('2022-02-01',12,0), ('2022-03-01',14,6), ('2022-04-01',15,13), ('2022-05-01',10,18);
 select startDate, Budgeted, Remaining, case when startDate < getDate() then Remaining else Budgeted end Hours from ops;
 开始日期 | 预算 | 剩余 | 营业时间:-------- |  ------: |  ------: |  ----: 2022-01-01 |  15 |  3 |  3 2022-02-01 |  12 |  0 |  0 2022-03-01 |  14 |  6 |  6 2022-04-01 |  15 |  13 |  15 2022-05-01 |  10 |  18 |  10

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM