PaP*_*nG0 1 sql t-sql sql-server
我正在使用SQL Server 2017并在此处提出了许多问题,我发现了case
一些if - else
在SQL 中起作用的语句.这很好,但不能满足我的结果集所需.如果我有一个销售表,其中包含金额,销售日期和项目描述.我想写这样的东西.
Select
sum(amount) -- total amount,
count(date_of_sale) -- number of days selling
sum(amount where date_of_sale between certain date and certain date)
Run Code Online (Sandbox Code Playgroud)
我不想在这之外放置一个where子句,因为我不希望它影响其他列的结果.我无法通过case
对我所尝试过的陈述来解决这个问题
我们可以在这里使用条件聚合,并总结一个CASE
表达式,其中只包含您感兴趣的日期范围内的金额.
SELECT
SUM(amount) AS total_sales,
COUNT(date_of_sale) AS total_items,
SUM(CASE WHEN date_of_sale BETWEEN start_date AND end_date
THEN amount ELSE 0 END) AS partial_sales,
COUNT(CASE WHEN date_of_sale BETWEEN start_date AND end_date
THEN 1 END) AS partial_items
FROM yourTable;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38 次 |
最近记录: |