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

Откуда:
Сообщений: 384
Добрый день

Подскажите, как можно написать такой запрос

Есть таблица

|  ID  |  Val1  |  Val2  |  Val3  |
-----------------------------------
| 1 | 2 | 2 | 5 |
| 2 | 3 | 4 | 1 |
| 3 | 6 | 1 | 9 |
| 4 | 5 | 1 | 1 |
-----------------------------------

нужно получить

|  ID  |  Val  |
----------------
| 1 | 5 |
| 2 | 4 |
| 3 | 9 |
| 4 | 5 |
----------------
27 авг 09, 14:23    [7586653]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
Schors
Member

Откуда:
Сообщений: 13
temp-for-testing
Добрый день

Подскажите, как можно написать такой запрос

Есть таблица

|  ID  |  Val1  |  Val2  |  Val3  |
-----------------------------------
| 1 | 2 | 2 | 5 |
| 2 | 3 | 4 | 1 |
| 3 | 6 | 1 | 9 |
| 4 | 5 | 1 | 1 |
-----------------------------------

нужно получить

|  ID  |  Val  |
----------------
| 1 | 5 |
| 2 | 4 |
| 3 | 9 |
| 4 | 5 |
----------------


Использовать CASE

CASE
WHEN VAL1>VAL2 THEN VAL1
ELSE VAL2
END
27 авг 09, 14:40    [7586740]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
temp-for-testing
Member

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

ну я так и делал.. думал, может есть конструкция покрасивее.. если 2-3 поля, это еще нормально, а если больше?
27 авг 09, 14:42    [7586749]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
aleks2
Guest
select id, (select MAX(v) FROM (select Val1 v UNION ALL SELECT Val2 UNION ALL select Val3) Y) ValMAX
from aTable
27 авг 09, 14:42    [7586752]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
aleks2
Guest
select id, (select MAX(v) FROM (select Val1 v UNION ALL SELECT Val2 UNION ALL select Val3) Y) ValMAX
from aTable
27 авг 09, 14:42    [7586753]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
aleks2
Guest
select id, (select MAX(v) FROM (select Val1 v UNION ALL SELECT Val2 UNION ALL select Val3) Y) ValMAX
from aTable
27 авг 09, 14:42    [7586754]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
aleks2
Guest
Надож... я не хотел три штуки.
27 авг 09, 14:44    [7586762]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
aleks2
Надож... я не хотел три штуки.
Но зато одна отформатирована!!!
27 авг 09, 14:46    [7586777]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
ну я так и делал.. думал, может есть конструкция покрасивее.. если 2-3 поля, это еще нормально, а если больше?


DECLARE @T TABLE(ID int, Val1 int, Val2 int, Val3 int)

INSERT @T VALUES(1, 2, 2, 5)
INSERT @T VALUES(2, 3, 4, 1)
INSERT @T VALUES(3, 6, 1, 9)
INSERT @T VALUES(4, 5, 1, 1)

;WITH CTE1 (ID, Val, Value)
AS
(
SELECT
  ID, Val, Value
FROM
  (SELECT ID, Val1, Val2, Val3 FROM @T) T
UNPIVOT
  (Val FOR Value IN (Val1, Val2, Val3)
)
 AS t1
)
SELECT 
  ID, 
  MAX(Val) As MaxVal
FROM CTE1
GROUP BY
  ID

ID          MaxVal      
----------- -----------
1 5
2 4
3 9
4 5

(4 row(s) affected)
27 авг 09, 14:56    [7586830]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное значение из 3 полей?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
aleks2
select id, (select MAX(v) FROM (select Val1 v UNION ALL SELECT Val2 UNION ALL select Val3) Y) ValMAX
from aTable
то же самое, но для SQL2008
SELECT id, (SELECT MAX(v) FROM (VALUES(Val1),(Val2),(Val3)) Y(v)) ValMAX
FROM aTable
27 авг 09, 16:16    [7587396]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить