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

Откуда:
Сообщений: 6
Добрый день.
Подскажите пожалуйста, как сделать следующее:
Сравнить два набора:
SELECT column1 FROM Table1 ORDER BY ColumnDate.Table1
и
SELECT column2 FROM Table1 ORDER BY ColumnDate.Table1

( наборы одинаковые по количеству строк и типу данных),
в результирующий набор необходимо получить только максимальные значения.

Заранее благодарю.
29 май 17, 17:50    [20521015]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
aleks2
Guest
Electroshit
Добрый день.
Подскажите пожалуйста, как сделать следующее:
Сравнить два набора:
SELECT column1 FROM Table1 ORDER BY ColumnDate.Table1
и
SELECT column2 FROM Table1 ORDER BY ColumnDate.Table1

( наборы одинаковые по количеству строк и типу данных),
в результирующий набор необходимо получить только максимальные значения.

Заранее благодарю.


И скока у вас ожидается "максимальных значений"?
29 май 17, 17:53    [20521029]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
msLex
Member

Откуда:
Сообщений: 7998
Electroshit,

вам для каждой записи нужно вывести максимальное из column1 и column2 что ли?
29 май 17, 17:58    [20521042]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Electroshit
Member

Откуда:
Сообщений: 6
msLex,
Необходимо построчно за каждую дату из двух выборок сравнить два значения и в результирующий набор вставить большее.
29 май 17, 18:16    [20521092]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
Electroshit
msLex,
Необходимо построчно за каждую дату из двух выборок сравнить два значения и в результирующий набор вставить большее.
Модератор: Рекомендации, п.4 и п.6
29 май 17, 18:19    [20521099]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Electroshit
Необходимо построчно за каждую дату из двух выборок сравнить два значения и в результирующий набор вставить большее.
а, то есть ещё есть поле дата?
А значений (строк) для каждой даты ровно одна, или может быть несколько?

PS точнее формулируйте условия, в программировании это важно.
29 май 17, 18:20    [20521107]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Electroshit
Сравнить два набора:
SELECT column1 FROM Table1 ORDER BY ColumnDate.Table1
и
SELECT column2 FROM Table1 ORDER BY ColumnDate.Table1

( наборы одинаковые по количеству строк и типу данных),
Улыбнуло "наборы одинаковые" :-)

Разумеется, одинаковые, ведь это одни и те же строки.
29 май 17, 18:22    [20521113]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
ColumnDate.Table1 - это что такое? Где во FROMе ColumnDate?
29 май 17, 21:16    [20521413]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27696
Electroshit, это что-ли?

https://stackoverflow.com/questions/71022/sql-max-of-multiple-columns/6871572#6871572
29 май 17, 22:17    [20521521]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Electroshit
Member

Откуда:
Сообщений: 6
Короткий пример.
Первый селект возвращает три значения 1 2 3, второй 4 1 5.
Нужен запрос, который в результате вернет 4 2 5.
30 май 17, 09:17    [20521942]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Electroshit
Короткий пример.
Первый селект возвращает три значения 1 2 3, второй 4 1 5.
Нужен запрос, который в результате вернет 4 2 5.

Ты пример разверни, а то как лимон - выжимаем из тебя по капле, что тебе нужно...
30 май 17, 09:34    [20521989]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Electroshit,

надо выбрать максимум из двух соседних колонок?
30 май 17, 09:38    [20522006]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Electroshit
Нужен запрос, который в результате вернет 4 2 5.

SELECT '4 2 5'

И не благодари, я это сделал за идею.
30 май 17, 09:42    [20522014]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
aleks2
Guest
Electroshit
Короткий пример.
Первый селект возвращает три значения 1 2 3, второй 4 1 5.
Нужен запрос, который в результате вернет 4 2 5.


SELECT column = iif( column1 >= column2, column1, column2 ) FROM Table1 ORDER BY ColumnDate.Table1 
30 май 17, 09:45    [20522031]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Добрый Э - Эх
Guest
Electroshit,

select max(<первое поле>), max(<второе поле>), max(<третье поле>)
from
(результаты первого запроса) q1
union all
(результаты второго запроса) q2
30 май 17, 09:46    [20522036]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20491
Electroshit
Первый селект возвращает три значения 1 2 3, второй 4 1 5.
Нужен запрос, который в результате вернет 4 2 5.

Добавить в запросы ROW_NUMBER(). Связать по нему. Сгруппировать по нему же. Взять бОльшее значение. Отсортировать по нему же. Наслаждаться бредовостью результата.
30 май 17, 09:49    [20522044]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
ветка угадывания, что же нужно ТС :)
30 май 17, 09:50    [20522053]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Electroshit
Member

Откуда:
Сообщений: 6
A| B | ColumnDate
_______________
1| 3 | 2016-01-01
______________
2| 1 | 2016-01-02
______________
3| 5 | 2016-01-03

В результате запроса необходимо получить

C| ColumnDate
____________
3| 2016-01-01
____________
2| 2016-01-02
____________
5| 2016-01-03
30 май 17, 10:43    [20522378]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT C=(SELECT MAX(F) FROM (VALUES(A),(B)) T(F)), ColumnDate
FROM Table1;
30 май 17, 10:47    [20522394]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Точнее:
SELECT C=(SELECT MAX(F) FROM (VALUES(Table1.A),(Table1.B)) T(F)), ColumnDate
FROM Table1;
30 май 17, 10:48    [20522397]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Electroshit
Member

Откуда:
Сообщений: 6
iap,

Спасибо, это то, что надо.
30 май 17, 11:24    [20522574]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Electroshit
iap,

Спасибо, это то, что надо.
Кстати, в случае двух полей можно написать проще и эффективнее.
Если полей больше, то просто текст уж очень быстро увеличивается.
SELECT C=CASE WHEN A>B THEN A ELSE B END, ColumnDate
FROM Table1;
30 май 17, 12:19    [20522810]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
Electroshit
Member

Откуда:
Сообщений: 6
iap,

А можно как-нибудь добавить еще столбец, который заполнять значениями (см. столбец D)

C| D |ColumnDate
____________
3| A<B |2016-01-01
____________
2| A>B|2016-01-02
____________
5| A<B |2016-01-03

Заранее спасибо.
31 май 17, 09:53    [20526162]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение строк в двух SELECT (MSSQL 2008)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Electroshit
iap,

А можно как-нибудь добавить еще столбец, который заполнять значениями (см. столбец D)

C| D |ColumnDate
____________
3| A<B |2016-01-01
____________
2| A>B|2016-01-02
____________
5| A<B |2016-01-03

Заранее спасибо.
Ещё такой же CASE написать.
Просто в THEN и ELSE будут нужные строки.
31 май 17, 12:05    [20526800]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить