我想獲得一個嵌套case語句來工作,在階段中工作,但現在我嵌套了另一個case語句,它抱怨語法。我看了很多例子,看不出我出錯的地方。使用嵌套Case語句的SQL行到列
我希望實現的是每個PolicyTransactionId(在where子句中設置)的行,每個帳戶代碼都作爲列。這對我來說很合適,因爲錯誤在於添加嵌套條目來查看借記/貸記條目,並在適當的時候將數字轉爲負數。
嘗試到目前爲止附加。
http://sqlfiddle.com/#!6/8db47/3
CREATE TABLE [dbo].[PolicyTransactionSplits](
[PolicyTransactionSplitId] [int] NOT NULL,
[PolicyTransactionId] [int] NOT NULL,
[AccountCode] [int] NOT NULL,
[AccountDesc] [nvarchar](max) NULL,
[TransactionType] [nvarchar](max) NULL,
[Amount] [decimal](18, 2) NOT NULL,
[Adjusted] [bit] NOT NULL DEFAULT ((0))
)
;
INSERT INTO PolicyTransactionSplits
([PolicyTransactionSplitId], [PolicyTransactionId], [AccountCode], [AccountDesc], [TransactionType], [Amount], [Adjusted])
VALUES
(1551,1096,1000,'Total Transaction Premium','Debit',50,0),
(1552,1096,1010,'Total Net Premium','Debit',50,0)
;
...
select
max(case when AccountCode = 1000 then case when TransactionType = 'Debit' then Amount end else case when AccountCode = 1000 then case when TransactionType = 'Credit' then Amount*-1 end) [Total Transaction Premium]
max(case when AccountCode = 1000 then case when TransactionType = 'Debit' then Amount end else case when AccountCode = 1000 then case when TransactionType = 'Credit' then Amount*-1 end) [Total Transaction Premium]
from PolicyTransactionSplits
where PolicyTransactionId = 10
你很小心看起來像一個故意嘗試創建不可讀的代碼。使用適當的發明,用括號分開邏輯語句,然後你會自己發現問題。 – Amit
解決在http://sqlfiddle.com/#!6/8db47/17 –