SQL Server 按月、年和货币计算的总折扣,不包括2017年的数据

lnvxswe2  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(154)

我需要知道每月、每年和货币的总折扣,不包括该 db2 017年的数据:

Sales table:
PK sale_id : text
FK1 client_id : text
tax_code : text
currency : text
amount : integer
notes : text
created_at : timestamp

Sales_entries table:
PK sale_entry_id : text
FK1 sale_id : text
price : integer
discount : integer
FK2 journey_id : text

我已经创建了此查询,但不知道它是否正确:

Select
Datetrunc(‘month’, a.created_at) as month,
Datetrunc(‘year’, a.created_at) as year,
a.Currency as currency,
Sum(b.discount) as discount
From sales as a
Left join sales_entries as b 
On a.sales_id = b.sale_id
Where year <> 2017
Group by
Month,
Year,
currency
bis0qfac

bis0qfac1#

你的日期计算有点错误。我想这就是你想要的:

select year(s.created_at) as yyyy,
       month(s.created_at) as mm,
       s.Currency as currency,
       sum(se.discount) as discount
from sales s left join
     sales_entries se
     on s.sales_id = se.sale_id
where s.created_at < '2017-01-01' or
      s.created_at >= '2018-01-01'
group by year(s.created_at), month(s.created_at),
         s.currency
order by year(s.created_at), month(s.created_at), s.currency;

请注意,我还用有意义的缩写而不是任意字母替换了表别名。

7uzetpgm

7uzetpgm2#

在相同的数据库中,这对于每个月、年和币种的总销售额都是正确的。该金额应除以100,并保留一位小数。

select year(s.created_at) as yyyy,
       month(s.created_at) as mm,
       s.Currency as currency,
      truncate(sum(se.amount)/100,1) as totamount
FROM sales s

相关问题