Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
DeeZ
Member

Откуда:
Сообщений: 45
Есть база (условная)
 INSERT INTO [customers] ([A] ,[Port],[name],[id])
VALUES 
 (883,3006,'022','010336')
,(883,3061,'002','090096')
,(884,3082,'006','090105')
,(883,3084,'014','090318')
,(883,3090,'038','090033')
go

Как сделать select, так что бы результатом было 3 колонки [A] ,[Port] а в третью попадало значение [name] если A = 883 и значение id если A = 884
те что бы в результате получилась таблица:
[A] [Port][magic]
8833006022
8833061002
8843082090105
8833084014
8833090038

SELECT  [A] 
       ,[Port]
       ,(if A = 884 then [name] else [id] ) as [magic]
from [customers]

такое вообще возможно?
11 июн 14, 14:33    [16154737]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
icprog
Member

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

Похоже вам нужен CASE ?
11 июн 14, 14:36    [16154761]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
gang
Member

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

В tsql это реализуется оператором CASE практически в таком же виде как вы и написали. Доля 2012+ есть еще оператор IIF.
11 июн 14, 14:37    [16154788]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
gang
Member

Откуда:
Сообщений: 1394
gang
Доля 2012+

В смысле "Для 2012+"
11 июн 14, 14:39    [16154801]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
гость 18
Guest
select
  [A] 
 ,[Port]
 ,iif(A = 884, [name], [id]) [magic]
from [customers]
11 июн 14, 14:45    [16154874]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
DeeZ
Member

Откуда:
Сообщений: 45
Спасибо! получилось )

SELECT  [A] 
       ,[Port]
       ,CASE [A]
         when '884' then [name]
         else [id]
        end as [magic]
from [customers]
11 июн 14, 14:46    [16154883]     Ответить | Цитировать Сообщить модератору
 Re: Выбор столбца по условию (взять значение из id если а=883 иначе брать name)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
CHOOSE() также подойдет.
11 июн 14, 14:47    [16154896]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить