У меня возникли проблемы с получением инструкции CASE для работы во вложенном элементе. Я думаю, что я близок, но я не могу правильно получить синтаксис. До сих пор я пытался:Case in inested select
SELECT l.*,
Credit = (
CASE WHEN ISNULL(M.POSTCODE,'') <> '' THEN
sum(Credit) from Balance cb Where LEFT(LTrim(cb.AccountHolder),4) LIKE LEFT(LTrim(m.Company),4)
ELSE
sum(Credit) from Balance cb Where LEFT(LTrim(cb.AccountHolder),4) LIKE LEFT(LTrim(m.Company),4)
END
)
FROM live l INNER JOIN master m on m.ClientID = L.ClientID
WHERE ClientID = 12345
А также:
SELECT l.*,
(SELECT
CASE WHEN ISNULL(M.POSTCODE,'') <> '' THEN
sum(Credit) from Balance cb Where LEFT(LTrim(cb.AccountHolder),4) LIKE LEFT(LTrim(m.Company),4)
ELSE
sum(Credit) from Balance cb Where LEFT(LTrim(cb.AccountHolder),4) LIKE LEFT(LTrim(m.Company),4)
END
) AS Credit
FROM live l INNER JOIN master m on m.ClientID = L.ClientID
WHERE ClientID = 12345
который, кажется, совпадают с примерами MSDN на http://msdn.microsoft.com/en-us/library/ms181765.aspx. Я что-то упускаю?
Поскольку ваши THEN и ваша ветка ELSE равны, вы можете просто избавиться от CASE. ;-) – Heinzi
Ваши два кода снайпера betwen THEN/ELSE и ELSE/END появляются одинаково? Кроме того, вам просто нужны '()' 's и SELECT в ваших подзапросах ... * (Как и ответ @ptfaulkner) *' (SELECT SUM (кредит) FROM Balance WHERE ...) ' – MatBailie
>> У меня возникли проблемы с получением инструкции CASE для работы во вложенном элементе. << Какие проблемы у вас есть? Любые ошибки или предупреждения? –