I made this query on sql server 2014, the fact is that I have to correctly order the result of the query, the first two lines of output of the query (below) are correct while from the third onwards the fields DescrizioneDis, CostoUnitario e Quantita, I get inserted in the fourth row instead of the third, I can not figure out where I'm wrong? I entered the query below, the wrong video result, the result I would like to get and the table structures!
IMAGE OF Incorrect Result
IMAGE OF Correct result(that i should get)
I WOULD LIKE to get this result
SQL Create Table of Capitolo:
CREATE TABLE [dbo].[Capitolo](
[IdCapitolo] [int] IDENTITY(1,1) NOT NULL,
[IdPreventivo] [int] NULL,
[NumeroCapitolo] [int] NULL,
[Descrizione] [varchar](5000) NOT NULL,
[Ricarico] [money] NULL,
[Modificaincorso] [varchar](100) NULL,
[Tipologia] [varchar](20) NULL,
[PrezzoRiservato] [money] NULL,
PRIMARY KEY CLUSTERED
(
[IdCapitolo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
SQL Create Table of SottoCapitolo:
CREATE TABLE [dbo].[SottoCapitolo](
[IdSottoCapitolo] [int] IDENTITY(1,1) NOT NULL,
[IdCapitolo] [int] NULL,
[Tipo] [varchar](500) NULL,
[Codice] [varchar](500) NULL,
[CodiceDistinta] [int] NULL,
[Descrizione] [varchar](5000) NULL,
[DescrizioneEstesa] [varchar](5000) NULL,
[UnitaMisura] [varchar](10) NULL,
[SottoCapitolo1] [varchar](100) NULL,
[SottoCapitolo2] [varchar](100) NULL,
[SottoCapitolo3] [varchar](100) NULL,
[Note] [varchar](1000) NULL,
[RicaricoManodopera] [float] NULL,
[Quantita] [int] NULL,
[CostoUnitario] [money] NULL,
[Images] [varbinary](max) NULL,
[PrezzoListino] [money] NULL,
PRIMARY KEY CLUSTERED
(
[IdSottoCapitolo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Tipo]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Codice]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [CodiceDistinta]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Descrizione]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [DescrizioneEstesa]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [UnitaMisura]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [SottoCapitolo1]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [SottoCapitolo2]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [SottoCapitolo3]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Note]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT ((0)) FOR [RicaricoManodopera]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Quantita]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [CostoUnitario]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT (NULL) FOR [Images]
GO
ALTER TABLE [dbo].[SottoCapitolo] ADD DEFAULT ((0)) FOR [PrezzoListino]
GO
ALTER TABLE [dbo].[SottoCapitolo] WITH CHECK ADD FOREIGN KEY([IdCapitolo])
REFERENCES [dbo].[Capitolo] ([IdCapitolo])
GO
What I have tried:
This is my Query now:
DECLARE @T AS TABLE (
Descrizione varchar(5000),
NumeroCapitolo varchar(100),
SottoCapitolo1 varchar(5000),
SottoCapitolo2 varchar(5000),
SottoCapitolo3 varchar(5000),
Totale money,
DescrizioneEstesa varchar(5000),
Images image,
CostoUnitario money,
Quantita money,
DescrizioneDis varchar(5000),
Tipologia varchar(300),
PrezzoRiservato money,
UM varchar(50)
);
INSERT INTO @T
SELECT
Capitolo.Descrizione,
Capitolo.NumeroCapitolo,
SottoCapitolo.SottoCapitolo1,
SottoCapitolo.SottoCapitolo2,
SottoCapitolo.SottoCapitolo3,
(ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2)) * SottoCapitolo.Quantita AS Totale,
SottoCapitolo.DescrizioneEstesa,
SottoCapitolo.Images,
ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2) AS CostoUnitario,
SottoCapitolo.Quantita,
CASE
WHEN Tipologia = 'Prezzo' THEN SottoCapitolo.Descrizione
ELSE '' + SottoCapitolo.Codice + ' ' + SottoCapitolo.Descrizione
END AS DescrizioneDis,
Capitolo.Tipologia,
Capitolo.PrezzoRiservato,
SottoCapitolo.UnitaMisura AS UM
FROM Capitolo
INNER JOIN SottoCapitolo
ON SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo
INNER JOIN Preventivo
ON Preventivo.IdPreventivo = Capitolo.IdPreventivo
WHERE Preventivo.IdPreventivo = '196';
SELECT
CASE
WHEN ROW_NUMBER()
OVER (PARTITION BY a.Descrizione ORDER BY a.Descrizione) = 1 THEN a.Descrizione
ELSE ''
END AS Descrizione,
a.NumeroCapitolo,
a.SottoCapitolo1,
a.SottoCapitolo2,
a.SottoCapitolo3,
a.DescrizioneDis,
a.CostoUnitario,
a.Quantita,
a.Totale AS TotaleCap,
a.DescrizioneEstesa,
a.Images,
a.Tipologia,
a.PrezzoRiservato,
a.UM
FROM (SELECT
1 AS d,
ROW_NUMBER() OVER (PARTITION BY Descrizione ORDER BY Descrizione) AS r,
Descrizione,
NumeroCapitolo,
SottoCapitolo1,
SottoCapitolo2,
SottoCapitolo3,
Totale,
DescrizioneDis,
Images,
CostoUnitario,
Quantita,
DescrizioneEstesa,
Tipologia,
PrezzoRiservato,
UM
FROM @T
UNION ALL
SELECT
2,
0,
Descrizione,
NumeroCapitolo,
'',
'',
'',
SUM(Totale),
'',
'',
'',
'',
'',
Tipologia,
PrezzoRiservato,
''
FROM @T
GROUP BY NumeroCapitolo,
Descrizione,
PrezzoRiservato,
Tipologia) AS a
ORDER BY NumeroCapitolo