ok, grazie.
L'errore sul server di esercizio è:
codice:
Messaggio 195, livello 15, stato 10, riga 137
'ROLLUP' non è un valore riconosciuto di nome di funzione predefinita.
Messaggio 195, livello 15, stato 10, riga 222
'ROLLUP' non è un valore riconosciuto di nome di funzione predefinita.
La query è questa, gli errori sul server di esercizio si verificano sulla riga dei ROLLUP:
codice:
CREATE TABLE TestTable (
[MAT] VARCHAR (100),
[NVE] INT,
[NVES] INT
);
INSERT INTO TestTable ([MAT], [NVE], [NVES]) SELECT
COALESCE ([MAT], 'Totale') AS [MAT],
[NVE],
[NVES]
FROM
(
SELECT DISTINCT
CASE
WHEN LEFT (TZZ, 2) = 'AD'
OR LEFT (TZZ, 2) = 'AF' THEN
'MAO'
WHEN LEFT (TZZ, 2) = 'AG'
OR LEFT (TZZ, 2) = 'AH' THEN
'MAE'
WHEN LEFT (TZZ, 2) = 'AI'
OR LEFT (TZZ, 2) = 'AM'
OR LEFT (TZZ, 2) = 'AS'
OR LEFT (TZZ, 2) = 'AO' THEN
'MAC'
WHEN LEFT (TZZ, 2) = 'AP'
OR LEFT (TZZ, 2) = 'AQ'
OR LEFT (TZZ, 2) = 'AR' THEN
'MAS'
ELSE
'Totale'
END AS [MAT],
COUNT (*) AS [NVE],
SUM (
CASE
WHEN (
[R-M] = '1'
OR [R-M] = '2'
OR [R-M] = '3'
OR [R-M] = '4'
)
AND [DATA-V] IS NOT NULL THEN
1
ELSE
0
END
) AS [NVES]
FROM
dbo_40
WHERE
1 = 1
AND [TZZ] NOT LIKE 'LG%'
GROUP BY
ROLLUP (
CASE
WHEN LEFT (TZZ, 2) = 'AD'
OR LEFT (TZZ, 2) = 'AF' THEN
'MAO'
WHEN LEFT (TZZ, 2) = 'AG'
OR LEFT (TZZ, 2) = 'AH' THEN
'MAE'
WHEN LEFT (TZZ, 2) = 'AI'
OR LEFT (TZZ, 2) = 'AM'
OR LEFT (TZZ, 2) = 'AS'
OR LEFT (TZZ, 2) = 'AO' THEN
'MAC'
WHEN LEFT (TZZ, 2) = 'AP'
OR LEFT (TZZ, 2) = 'AQ'
OR LEFT (TZZ, 2) = 'AR' THEN
'MAS'
ELSE
'Totale'
END
)
) AS SubQs
WHERE
1 = 1
ORDER BY
CASE MAT
WHEN 'MAO' THEN
1
WHEN 'MAE' THEN
2
WHEN 'MAC' THEN
3
WHEN 'MAS' THEN
4
ELSE
5
END;
SELECT
[MAT],
[NVE],
[NVES]
FROM
(
SELECT
[MAT],
[NVE],
[NVES]
FROM
TestTable
UNION
SELECT
COALESCE ([MAT], 'Totale') AS [MAT],
SUM ([NVE]),
SUM ([NVES])
FROM
TestTable
GROUP BY
(mat)
) q
ORDER BY
CASE MAT
WHEN 'MAO' THEN
1
WHEN 'MAE' THEN
2
WHEN 'MAC' THEN
3
WHEN 'MAS' THEN
4
ELSE
5
END;
DROP TABLE TestTable;