Join 2 select операторы, которые не имеют ничего общего
У меня есть хранимые процедуры, которые выполняют различные задачи, но я хотел бы собрать некоторые из них вместе, чтобы уменьшить количество хранимых процедур, созданных в базе данных. Многие процедуры основаны на статистике лет и вот вам пример:
Select DATENAME(MONTH, DATE_) AS Date, count(distinct VATNUMBER) As Count from ( select VATNUMBER, DATE_ = min(DATE_) from ACCOUNTS a inner join CUSTTABLE b on a.ID= b.ID where ITEMNUMBER in(7055,7056,7059) AND YEAR(a.DATE_) = '2017' AND VATNUMBER NOT IN ( select VATNUMBER from ACCOUNTS a inner join CUSTTABLE b on a.ID= b.ID where ITEMNUMBER in(7055,7056,7059) AND DATE_ < '2017-01-01' ) group by VATNUMBER ) d group by MONTH(DATE_), DATENAME(MONTH, DATE_) Order by MONTH(DATE_)
Результат за 2017 год:
Date | Count January | 61 February | 43 March | 23 April | 48 etc....
А теперь у меня такая же процедура на 2018 год:
Select DATENAME(MONTH, DATE_) AS Date, count(distinct VATNUMBER) As Count from ( select VATNUMBER, DATE_ = min(DATE_) from ACCOUNTS a inner join CUSTTABLE b on a.ID= b.ID where ITEMNUMBER in(7055,7056,7059) AND YEAR(a.DATE_) = '2018' AND VATNUMBER NOT IN ( select VATNUMBER from ACCOUNTS a inner join CUSTTABLE b on a.ID= b.ID where ITEMNUMBER in(7055,7056,7059) AND DATE_ < '2018-01-01' ) group by VATNUMBER ) d group by MONTH(DATE_), DATENAME(MONTH, DATE_) Order by MONTH(DATE_)
Результат за 2018 год:
Date | Count January | 119 February | 200 March | 112 April | 87 etc....
Что я хотел бы сделать, так это поместить оба оператора select в одну и ту же хранимую процедуру. Результат, который я хотел бы увидеть, таков:
Date 2017| Count | Date 2018| Count January | 61 | January | 119 February | 43 | February | 200 March | 23 | March | 112 April | 48 | April | 87 etc....
Что я уже пробовал:
Я пробовал союз, Союз все безрезультатно или не ожидал ожидаемого результата
CHill60
Что произошло, когда вы использовали UNION?
Mish1337
Он работает нормально, но оба результата отображаются друг на друге или как отдельные результаты
CHill60
Вы также говорите, что они не имеют ничего общего - и все же они идентичны. Единственное, что меняется, - это дата. Я даже не уверен, почему вы используете это не в - вы никогда не попадете в него из-за теста на год(a.DATE_)... или можно ли повторно использовать номер VATNUMBER в следующем году, и вы не хотите включать эти записи?
Mish1337
Правильно, вы можете игнорировать утверждение not in, так как его единственная задача-искать новые номера ватт, которых не существовало в прошлые годы.
Я знаю, что обе таблицы идентичны (прямо сейчас)
Но когда я добавлю статистику 2019 года, то они не будут идентичны, так как 2019 год начнется с января и будет расти с течением времени
Richard Deeming
Это все равно идентично - вы просто меняете диапазон дат.
Jörgen Andersson
Используйте стержень
Mish1337
Можете ли вы продемонстрировать, как