[英]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.