Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединить колонки двух Select с разным количеством строк  [new]
Malyav
Member

Откуда:
Сообщений: 183
Здравствуйте все. Ищу помощи в реализации следующей задачи:

В первой базе есть таблица с перечнем объектов (и их свойствами) в разных городах. Предположим, это генераторы.
[DataBase1].[dbo].[Objects]

City Object Par1 Par2 Par3
--------------------------
Mosk Gener1 bla1 bla2 bla3
Ekat Gener1 bla1 bla2 bla3
Mosk Gener2 bla1 bla2 bla3
Novs Gener1 bla1 bla2 bla3
Mosk Gener3 bla1 bla2 bla3

Я делаю из нее выборку - список всех генераторов в определенном городе.
SELECT [City], [Object] FROM [DataBase1].[dbo].[Objects] where City='Mosk'


Во второй базе есть таблица с перечнем этих же генераторов, но только тех, что в определенную неделю (номер недели) года работали с заниженной мощностью (%).
[DataBase2].[dbo].[LowPower]

City Object Year Week Powr Par1
-------------------------------
Mosk Gener1 2015 3 75 bla1
Ekat Gener1 2015 3 84 bla1
Novs Gener1 2015 3 96 bla1
Mosk Gener3 2015 3 45 bla1

Я делаю из нее выборку - список всех генераторов в определенном городе в определенную неделю.
SELECT [City], [Object], [Powr] FROM [DataBase2].[dbo].[LowPower] where City='Mosk' and Year=2015 and Week=3

Соответственно, количество строк получается меньше, чем в первом селекте.

Задача, объединить эти две выборки так, чтобы получить список всех генераторов из первого селекта с указанием их мощности. Для тех, что не попали во вторую выборку указать мощность, равную 100%

City Object Powr 
----------------
Mosk Gener1 75
Mosk Gener2 100
Mosk Gener3 45

Можно ли такое реализовать и как?
13 мар 15, 07:47    [17378686]     Ответить | Цитировать Сообщить модератору
 Re: Объединить колонки двух Select с разным количеством строк  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Примерно так можно
SELECT o.City, o.Object, IsNULL(lp.Powr, 100) AS Powr
FROM Objects o LEFT OUTER JOIN LowPower lp ON o.City=lp.City AND o.Object=lp.Object AND lp.Year=2015 AND lp.Weak=3
WHERE o.City='Mosk'
13 мар 15, 08:06    [17378713]     Ответить | Цитировать Сообщить модератору
 Re: Объединить колонки двух Select с разным количеством строк  [new]
Malyav
Member

Откуда:
Сообщений: 183
angel_zar
Примерно так можно

Работает. Большое Вам спасибо.
13 мар 15, 08:37    [17378752]     Ответить | Цитировать Сообщить модератору
 Re: Объединить колонки двух Select с разным количеством строк  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Malyav
Работает. Большое Вам спасибо.

Главное чтоб вы понимали как это работает.
13 мар 15, 08:44    [17378765]     Ответить | Цитировать Сообщить модератору
 Re: Объединить колонки двух Select с разным количеством строк  [new]
Malyav
Member

Откуда:
Сообщений: 183
angel_zar
Главное чтоб вы понимали как это работает.

Я разобрался. Для большей наглядности добавил в результат значения года и недели с использованием IsNull, отсортировал по возрастанию "мощности".
Мне придется несколько таких запросов делать к разным таблицам, так что понять, как это работает, мне было необходимо.
13 мар 15, 10:35    [17379247]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить