【发布时间】:2021-02-24 18:26:40
【问题描述】:
我有一个如下所示的连接表,其中 mytable 包含日期、storeid、item 和 units,而 stores 具有 state 和 storeid。
date state storeid item units
==============================================
2020-01-22 new york 712 a 5
2020-01-22 new york 712 b 7
2020-02-18 new york 712 c 0
2020-05-11 new york 518 b 9
2020-01-22 new york 518 b 10
2020-01-21 oregon 613 b 0
2020-02-13 oregon 613 b 9
2020-04-30 oregon 613 b 10
2020-01-22 oregon 515 c 3
我正在尝试创建一个列来计算 storeid 和 item 在 date 的行中出现的唯一次数> 介于给定日期范围内且 units 大于 0。另外,只需按 state 和计算列进行选择/分组。我有一些看起来像这样的东西:
select
s.state,
count(distinct case
when m.date between '2020-01-01' and '2020-03-31'
and m.units > 0
then m.storeid, m.item
end) as q1_total
from mytable as m
left join (select
state,
storeid
from stores) s
on m.storeid=s.storeid
group by s.state
我知道我的计数函数没有正确编写,但我不确定如何修复它。试图让最终结果看起来像这样。
state q1total
=========================
new york 3
oregon 2
【问题讨论】:
-
你用的是什么数据库?
-
在 sql server 中执行此操作。此外,编辑以上内容以将表名添加为“mytable”。感谢举报。
标签: sql sql-server count distinct