2015-10-29 6 views
0

В SQL ниже столбец Bank возвращает строку emty (''), если select не может найти значение в таблице поиска. Вместо того, чтобы пустая строка, я хочу показать значение в поле b.BankNameЗаполните столбец со значениями из двух местоположений

SELECT 
' ' AS DUMMY, 
c.CustomerNumber AS DirectDebitRef, 
(SELECT replace(bankname, 'Other (please specify)', '') 
FROM Banks 
WHERE bankid = b.bankid) AS Bank, 
b.SortCode AS SortCode 
FROM 
dbo.Customers AS c 
INNER JOIN dbo.CustomerBanks AS b ON c.CustomerBankId = b.CustomerBankId 
INNER JOIN dbo.View_CustomerBillingsToday AS v ON c.CustomerId = v.CustomerId 
INNER JOIN dbo.CustomerAddressBillings AS s ON c.CustomerAddressBillingId = s.CustomerAddressBillingId 

В тот момент я добавляю b.BankName я получаю NULL вывод всех строк, которые имеют действительный поиск. Если я заменил b.BankName на «x», я получаю значение во всех строках. Так что я знаю, что замена будет работать, но когда я пытаюсь ссылаться на имя_поле, который работает, но обнуляет все остальные строки

replace((SELECT  bankname 
           FROM   Banks 
           WHERE  bankid = b.bankid), 'Other (please specify)', b.BankName) AS Bank 
+0

Что такое поле 'b.Other'? –

+0

Его поле, в котором хранится строка, когда список перетаскиваний не удерживает элемент – John

+0

Итак, вы говорите, что вы хотите, чтобы 2 поля в выводе - 'имя банка', когда оно находится в списке, и' other', когда оно не является «т? –

ответ

0

саз работал, используя, что вместо того, чтобы заменить сделал трюк :-)

case WHEN (SELECT bankname 
           FROM   Banks 
           WHERE  bankid = b.bankid) = 'Other (Please Specify)' THEN b.BankName 
           ELSE (SELECT bankname 
           FROM   Banks 
           WHERE  bankid = b.bankid) 
           END AS Bank 
Смежные вопросы