У меня есть процедура, работает как надо. Но появилась острая необходимость переделать запрос без использования процедуры.
Я привела схему запроса в процедуре, где названия таблиц и условия WHERE условные.
Подскажите как это лучше реализвать. Tab1, Tab2, Tab3 между собой не связаны.
CREATE PROCEDURE Itog
@DateBegin DateTime
,@DateEnd DateTime
AS BEGIN
SELECT * INTO #viborca1
FROM Tab1
WHERE poleB >= @@DateBegin and poleE < @@DateEnd
SELECT * INTO #viborca2
FROM Tab2
WHERE poleB >= @DateBegin and poleE < @DateEnd
SELECT * INTO #viborca3 FROM Tab3
SELECT distinct(City) as City
INTO #City FROM #viborca1
UNION
SELECT distinct(City) FROM #viborca2
UNION
SELECT distinct(City) FROM #viborca3
CREATE TABLE #Itog
(
City Varchar(25),
Pole1 Int,
Pole2 Int,
Pole3 Int,
Pole4 Int,
Pole5 Int,
Pole6 Int,
Pole7 Int,
Pole8 Int,
)
INSERT #Itog
SELECT City,0,0,0,0,0,0,0,0
FROM #City
UPDATE #Itog
SET Pole1 = (SELECT Sum(Money) FROM #viborca1 WHERE pole12 < 3),
Pole2 = (SELECT Count(distinct pole13) FROM #viborca1 WHERE pole12 < 3)
UPDATE #Itog
SET Pole3 = (SELECT Sum(Money) FROM #viborca2 WHERE pole12 > 5),
Pole4 = (SELECT Count(distinct pole13) FROM #viborca2 WHERE pole12 > 5)
UPDATE #Itog
SET Pole5 = (SELECT Sum(Money) FROM #viborca3 WHERE pole12 = 10),
Pole6 = (SELECT Count(distinct pole13) FROM #viborca3 WHERE pole12 = 10)
SELECT * INTO #Rezervl2
FROM #viborca1 WHERE pole7 = 12
UPDATE #Itog
SET Pole1 = Pole1 + (SELECT Sum(Summa) FROM #Rezervl2 WHERE pole4 = 'END'),
Pole2 = Pole2 + (SELECT Count(distinct pole15)FROM #Rezervl2 WHERE pole4 = 'END')
SELECT * INTO #Rezervl1
FROM #viborca1
WHERE pole17 = 756376
UPDATE #Itog
SET Pole7 = (SELECT Sum(Summa) FROM #Rezervl1 WHERE pole24 = 'Cancel'),
Pole8 = (SELECT Count(distinct pole13) FROM #Rezervl1 WHERE pole24 = 'Cancel')
SELECT * INTO #Rezervl4
FROM #viborca1
WHERE pole24 = 383635
UPDATE #Itog
SET Pole7 = Pole7 + (SELECT Sum(Summa) FROM #Rezervl4 WHERE pole14 = 'development'),
Pole8 = Pole8 + (SELECT Count(distinct pole13) FROM #Rezervl4 WHERE pole14 = 'development')
SELECT #Itog.*
FROM #Itog
END