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

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

Есть запрос:
SELECT
	a.[RM21082] AS 'VIN',
	CONVERT (VARCHAR, a.[RM21021], 104) AS 'Delivery date',
	a.[RM21196] AS 'Repairing Dealer',
	c.[RM02006] AS 'Buying Customer',
	CASE WHEN a.[RM21016] = 'VFS-Lease' THEN '6313030777' WHEN a.[RM21016] = '100% cash' THEN b.[RM02006] END,
	b.[RM02006] AS 'Using Customer',
    a.[RM21016] AS 'Contract type',
    a.[RM21002] AS 'Salesman'
FROM [RM].[dbo].[RM210100] AS a
	INNER JOIN [RM].[dbo].[RM020100] AS b ON a.RM21011 = b.RM02001
	INNER JOIN [RM].[dbo].[RM020100] AS c ON a.RM21239 = c.RM02001
WHERE
	a.[RM21082] IN ('X9PXG10D9FW114749', 'YV2RG20A9EB705405', 'X9PRG20A5EW113052')


Нужно что если поле в c.[RM02006] нет номера, то он бы брал значение по условию из поля a.[RM21016] (если VFS-Lease то проставлять 6313030777, если 100% cash, то брать номер из поля b.[RM02006].

Сейчас это сделано через CASE, но он добавляет еще одну колонку, нужно что бы это условие подставлялось в c.[RM02006].

Подскажите пожалуйста как это можно сделать.
23 окт 14, 11:57    [16747417]     Ответить | Цитировать Сообщить модератору
 Re: Заменить пустое значение в колонке при условии  [new]
Igor N
Member

Откуда:
Сообщений: 4
Картинка с другого сайта.

К сообщению приложен файл. Размер - 58Kb
23 окт 14, 11:59    [16747437]     Ответить | Цитировать Сообщить модератору
 Re: Заменить пустое значение в колонке при условии  [new]
baracs
Member

Откуда: Москва
Сообщений: 7204
Igor N,

В смысле, как проверить условие "в c.[RM02006] нет номера"? Сделайте вложенный CASE.
23 окт 14, 12:13    [16747493]     Ответить | Цитировать Сообщить модератору
 Re: Заменить пустое значение в колонке при условии  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
baracs
Сделайте вложенный CASE.


Вам наверное нужны функции ISNULL или COALESCE
23 окт 14, 12:27    [16747568]     Ответить | Цитировать Сообщить модератору
 Re: Заменить пустое значение в колонке при условии  [new]
baracs
Member

Откуда: Москва
Сообщений: 7204
a_voronin
baracs
Сделайте вложенный CASE.


Вам наверное нужны функции ISNULL или COALESCE
BOL
Функция COALESCE (expression1,...n) является эквивалентом следующего выражения CASE:

CASE

WHEN (expression1 IS NOT NULL) THEN expression1

WHEN (expression2 IS NOT NULL) THEN expression2

...

ELSE expressionN

END
23 окт 14, 12:34    [16747619]     Ответить | Цитировать Сообщить модератору
 Re: Заменить пустое значение в колонке при условии  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
SELECT
	a.[RM21082] AS 'VIN',
	CONVERT (VARCHAR, a.[RM21021], 104) AS 'Delivery date',
	a.[RM21196] AS 'Repairing Dealer',
	case when c.[RM02006]<>'' then c.[RM02006] 
		 WHEN a.[RM21016] = 'VFS-Lease' THEN '6313030777' 
		 WHEN a.[RM21016] = '100% cash' THEN b.[RM02006] 
		 END AS 'Buying Customer',
	CASE WHEN a.[RM21016] = 'VFS-Lease' THEN '6313030777' WHEN a.[RM21016] = '100% cash' THEN b.[RM02006] END,
	b.[RM02006] AS 'Using Customer',
    a.[RM21016] AS 'Contract type',
    a.[RM21002] AS 'Salesman'
FROM [RM].[dbo].[RM210100] AS a
	INNER JOIN [RM].[dbo].[RM020100] AS b ON a.RM21011 = b.RM02001
	INNER JOIN [RM].[dbo].[RM020100] AS c ON a.RM21239 = c.RM02001
WHERE
	a.[RM21082] IN ('X9PXG10D9FW114749', 'YV2RG20A9EB705405', 'X9PRG20A5EW113052')
23 окт 14, 12:39    [16747664]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить