Странная проблема с предложением GROUP BY и HAVING на SQL Server 2014.GROUP BY с предложением HAVING не возвращает строку?
Возможно, что я сделал что-то неправильно, но я не могу понять это.
Вот данные настройки:
create table #accounts(accountid int)
create table #data(accountid int, categoryid int, asofdate date, datavalue numeric(20, 10))
insert into #accounts
values
(1),(2),(3)
insert into #data
values
(1, 10, '1/31/2015', 0),
(1, 10, '2/28/2015', 10),
(1, 10, '3/31/2015', 20),
(2, 10, '1/31/2015', 0),
(2, 10, '2/28/2015', 15),
(2, 10, '3/31/2015', 25),
(3, 10, '1/31/2015', 0),
(3, 10, '2/28/2015', 7),
(3, 10, '3/31/2015', 12)
Это возвращает одну строку ... для 1/31/2015. Единственная дата в общем нулевой
select categoryid, asofdate, sum(datavalue) as totalvalue
from #accounts a
inner join #data d
on d.accountid = a.accountid
group by d.categoryid, d.asofdate
having sum(datavalue) = 0
Результата является 10, '1/31/2015', 0
Тем не менее, как-то следующий не возвращает ни одной строки ... Я в основном с просьбой дать мне дату Макс из первый запрос. Почему это не работает?
select categoryid, max(asofdate) as MaxAsOfDate, sum(datavalue) as totalvalue
from #accounts a
inner join #data d
on d.accountid = a.accountid
group by d.categoryid
having sum(datavalue) = 0
drop table #accounts
drop table #data
Однако он не возвращает строк ... сбит с толку.
SQL Скрипки здесь:
http://sqlfiddle.com/#!6/5e44cb/1
Прощайте победу, так как он показал мне, что было не так сперва ... вероятно, пойдет с подходом CTE. –