2016-05-11 2 views
0

Я пытаюсь использовать IIF в студии управления SQL Server 2012 (подключен к SQL Server 2012). Я могу создать то, что мне нужно в Access, но синтаксис SQL Server отключает меня. Даже что-то простое, какПроблемы IIF с SQL Server 2012

SELECT IIF(dbo.GL_Register.Credit_Or_Debit = C,'true','false') 
from dbo.GL_Register 

должен работать, но возвращает следующее сообщение об ошибке: «Ошибка в аргументах функции списка:..„=“Не распознается Невозможно разобрать текст запроса

Это так легко сделать в .?.. Access Что я делаю неправильно Спасибо

обновлен, получил его на полпути работы, используя «как» вместо равных Тогда он говорит: «FROM» проблема:

SELECT dbo.GL_Account.Account_Code, dbo.GL_Register.Date,  
SUM(IIF(dbo.GL_Register.Credit_Or_Debit like 'C',- 
dbo.GL_Register.Amount,dbo.GL_Register.Amount) AS Expr1 
FROM dbo.GL_Register INNER JOIN 
dbo.GL_Account ON dbo.GL_Register.Account_Id = dbo.GL_Account.Account_Id 
GROUP BY dbo.GL_Account.Account_Code, dbo.GL_Register.Date 
HAVING (dbo.GL_Account.Account_Code = N'11000') 

Ac SQL, что налог работает как шарм:

SELECT dbo_GL_Account.Account_Code, dbo_GL_Register.Date,  
Sum(IIf([Credit_Or_Debit]="C",-[Amount],[Amount])) AS Amount2 
FROM dbo_GL_Register INNER JOIN dbo_GL_Account ON dbo_GL_Register.Account_Id 
= dbo_GL_Account.Account_Id 
GROUP BY dbo_GL_Account.Account_Code, dbo_GL_Register.Date 
HAVING (((dbo_GL_Account.Account_Code)="11000")); 

ответ

2

Использование

SELECT case when dbo.GL_Register.Credit_Or_Debit = 'C' 
      then 'true' 
      else 'false' 
     end 
from dbo.GL_Register 
1

Ошибка синтаксиса из-за недостающую цитату вокруг «C»

я побежал подобный запрос и работал отлично.

SELECT IIF(dbo.GL_Register.Credit_Or_Debit = 'C','true','false') 
from dbo.GL_Register 
+0

Я использовал «CASE» и смог сделать то, что мне было нужно. Но из любопытства я вернулся и снова попробовал свой IIF, и я получил «Ошибка в списке аргументов функции:» = «не распознано». Я все еще не уверен, почему это не работает для меня. Если бы мне пришлось угадать, это потому, что поле не числовое и поэтому не нравится «=». – Bouje

+0

Тип колонки не должен иметь значения. Удивительно, что это не работает для вас! Мое единственное предположение: база данных yout установлена ​​в предыдущую версию (старше 2012 года). Выберите «Свойства»> «Параметры»> «Совместимость» в вашей базе данных. – FLICKER

Смежные вопросы