gpt4 book ai didi

sql - 在列列表中使用子查询

转载 作者:行者123 更新时间:2023-12-04 21:16:48 24 4
gpt4 key购买 nike

我想创建一个查询来计算过去 7、14 和 28 天内创建的记录数。我的结果将返回如下内容:

7Days  14Days  28Days  
21 35 56

我知道如何为每个 timepsan 例如7 天,但我是否在一个查询中捕获了所有三个?
select count(*) from Mytable
where Created > DATEADD(day,-8, getdate())

最佳答案

也不漂亮,但不依赖于子查询(表/列名称来自 AdventureWorks)。如果 case 语句符合您的条件,则返回 1,否则返回 0 - 然后您只需对结果求和:

select sum(case when datediff(day, modifieddate, getdate()) <= 7
then 1 else 0 end) as '7days',
sum(case when datediff(day, modifieddate, getdate()) > 7
and datediff(day, modifieddate, getdate()) <= 14
then 1 else 0 end) as '14days',
sum(case when datediff(day, modifieddate, getdate()) > 14
and datediff(day, modifieddate, getdate()) <= 28
then 1 else 0 end) as '28days'
from sales.salesorderdetail

编辑:更新了 datediff 函数 - 按照它的编写方式,它会返回一个负数(假设 modifieddate 是过去的),导致所有项目都属于第一种情况。感谢 Andriy M 指出这一点

关于sql - 在列列表中使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6025979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com