2015-12-18 2 views
0

У меня есть уникальное требование, когда у меня есть три таблицы аудита, где каждый раз, когда происходит изменение, создается новая запись для изменения. теперь мне нужно создать представление, которое получит идентификатор идентификатора заказа и сколько времени они будут изменены в трех уважаемых таблицах.Заявление SQL для подсчета того, сколько раз изменяется запись.

это мой SQL я разработал

select distinct orderid as salesorderid,COUNT (*) AS SALESORDERUPDATE 
FROM foobar 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by Orderid 
union all 
select distinct orderid as salesorderid,count(*) SALESORDERUPDATE AS 
from foobar1 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by OrderID 
union all 
select distinct orderid as salesorderid,count(*)AS SALESORDERUPDATE 
from foobar2 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by Orderid; 

Теперь результаты, которые я получаю, как это для OrderID 1 У меня есть 3 записи, показывающие различные значения для подсчета (*). Я хочу суммировать, что в одной строке

так что было бы что-то вроде

orderid 123 salesorderupdate(20) 
as suppose to 
orderId 123 salesorderupdate(10) 
orderid 123 salesorderupdate(7) 
orderid 123 salesorderupdate(3) 

Спасибо,

+1

всего лишь p ut это в начале .. 'SELECT orderid, SUM (SALESORDERUPDATE) FROM (' и это в конце ') t GROUP BY t.orderid' – JamieD77

+0

вам не нужен отдельный – Paparazzi

ответ

2

НЕТ:

select orderID, sum(salesorderupdate) 
from 
(the query from your question goes here) temp 
group by orderId 
1

Сделайте ваш запрос подтаблица, затем выберите идентификатор и сумму

select distinct orderid, sum(SALESORDERUPDATE) 
from (
select distinct orderid as salesorderid,COUNT (*) AS SALESORDERUPDATE 
FROM foobar 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by Orderid 
union all 
select distinct orderid as salesorderid,count(*) SALESORDERUPDATE AS 
from foobar1 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by OrderID 
union all 
select distinct orderid as salesorderid,count(*)AS SALESORDERUPDATE 
from foobar2 
where ModifiedDateTime>'2015-11-01 20:44:55.107' group by Orderid; 
) changes group by orderid; 
+0

Слово« отдельный »здесь не требуется , Предложение 'group by' позаботится об этом. –

+0

Хорошая точка. Я видел, что он делал это в своем первоначальном запросе и думал, что это может быть sql-server. – mccalljt

Смежные вопросы