Я пытаюсь получить вложенный оператор case для работы, который поэтапно работает, но теперь я вложил в другой оператор case, который жалуется на синтаксис. Я просмотрел множество примеров и не вижу, где я ошибся.SQL-строка в столбце с использованием вложенного оператора Case
То, что я хочу достичь, - это строка для 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 –