Tenho dados parecidos com estes:
Eu tento somar a coluna Nominal para cada pai respectivo, então ficará assim:
Eu forneci o script sql para os dados:
DEFINIR ANSI_NULLS EM IR DEFINIR IDENTIFICADOR_DE_CITAÇÕES EM IR CRIAR TABELA [dbo].[Conta]( [AccountSeq] [bigint] IDENTIDADE(1,1) NÃO NULO, [ParentAccountSeq] [bigint] NULO, [AccountCode] [nvarchar](50) NÃO NULO, [AccountName] [nvarchar](50) NÃO NULO, [Nominal] [decimal](18, 2) NÃO NULO ) EM [PRIMÁRIO] IR DEFINIR IDENTITY_INSERT [dbo].[Conta] LIGADO IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (1, NULL, N'101', N'AKTIVA LANCAR', CAST(0,00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (2, 1, N'10101', N'KAS', CAST(0,00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (3, 2, N'1010101', N'KAS KECIL (IDR)', CAST(10000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (4, 2, N'1010102', N'KAS KECIL ($$$)', CAST(15000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (5, 1, N'10102', N'BANK', CAST(0,00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (6, 5, N'1010201', N'BCA PKU AC: 220.391', CAST(20000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (7, 5, N'1010202', N'BCA PKU AC: 220.279', CAST(25000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (8, 1, N'10104', N'PIUTANG USAHA', CAST(30000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (10, 1, N'10105', N'PIUTANG PROYEK', CAST(40000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (11, NULL, N'201', N'HUTANG JANGKA PENDEK', CAST(50000.00 AS Decimal(18, 2))) IR INSERIR [dbo].[Conta] ([AccountSeq], [ParentAccountSeq], [AccountCode], [AccountName], [Nominal]) VALORES (12, NULL, N'301', N'MODAL', CAST(60000.00 AS Decimal(18, 2))) IR DEFINIR IDENTITY_INSERT [dbo].[Conta] DESLIGADO IR
a última consulta sql que tentei:
COM cteTest COMO ( SELECIONAR ContaSeq, ContaPaisSeq, Código de conta, Nome da conta, CAST(Nominal COMO DECIMAL(18,2)) COMO Nominal DE [Conta2] ONDE ParentAccountSeq É NULO UNIÃO DE TODOS SELECIONAR a.AccountSeq, a.ParentAccountSeq, a.Código da conta, a.NomeDaConta, CAST((a.Nominal + cte.Nominal) COMO DECIMAL(18,2)) COMO Nominal DE [Conta2] a JUNÇÃO INTERNA [cteTest] cte ON cte.AccountSeq = a.ParentAccountSeq ) SELECIONAR * DE [Teste cte] ORDEM POR ContaSeq
Alguém pode me ajudar a resolver isso?
Este código funcionará. Inverta a ordem da recursão e faça um agregado no final: