Процедура SQL для выбора слияния
Моя процедура:
create procedure "news"
as
select newsdate,COUNT(B.id) as total from news B
where B.newsyear < GETDATE()
Group by B.newsdate
select newsdate,COUNT(B.id) as total from news B
where B.status='WAITING' and B.cancel='1'
Group by B.newsdate
Результаты:
newsdate total
2011 4
2010 8
newsdate total
2011 2
2010 3
Как я могу объединить итоги года, чтобы получить этот набор результатов:
newsdate total
2011 6 {4 + 2}
2010 11 {8 + 3}
2 ответа
Решение
Используя простое или оператор (если это действительно та же таблица):
select newsdate,COUNT(B.id) as total
from news B
where B.newsyear < GETDATE()
or B.status='WAITING' and B.cancel='1'
Group by B.newsdate
или используя объединение все + совокупность суммы (если это разные таблицы):
select newsdate, sum(total) as total from (
select newsdate,COUNT(B.id) as total from news B where B.newsyear < GETDATE()
Group by B.newsdate
union all
select newsdate,COUNT(B.id) as total from news B where B.status='WAITING' and B.cancel='1'
Group by B.newsdate
) as rows
group by newsdate
Попробуй это:
select newsdate,COUNT(B.id) as total
from news B
where ( B.newsyear < GETDATE() )
or ( B.status='WAITING' and B.cancel='1' )
Group by B.newsdate