2016-05-11 7 views
0

SQL Server 2012 Management Studio(SQL Server 2012に接続)でIIFを使用しようとしています。私はAccessで必要なものを作り出すことができますが、SQL Serverの構文が私を驚かせています。シンプルであっても、何かのようなSQL Server 2012のIIFトラブル

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

は動作しますが、次のエラー思い出させる必要があります。「リストの関数の引数でエラーが発生しました:。。 『=』クエリテキストを解析できません認識されないの

これはで行うのはとても簡単です。?。

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

カラムタイプは重要ではありません。あなたのためにはうまくいかないことは驚くべきことです!私の唯一の推測では、データベースは以前のバージョン(2012年より前)に設定されています。データベースの[プロパティ] - [オプション] - [互換性]をチェックします。 – FLICKER