Code:
CREATE TABLE TestTable (
[MAT] VARCHAR (100),
[NVE] INT,
[NVES] INT
);
CREATE TABLE dbo_40 (
[TZZ] VARCHAR(4),
[R-M] VARCHAR(1),
[DATE-V] DATETIME NULL,
);
INSERT INTO dbo_40 VALUES ('AD', '1', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AD', '1', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AD', '1', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AD', '1', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AF', '1', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AD', '2', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AD', '2', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AD', '2', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AD', '2', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AF', '2', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AG', '1', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AG', '1', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AG', '1', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AG', '1', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AH', '1', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AG', '2', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AG', '2', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AG', '2', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AG', '2', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AH', '2', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AM', '1', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AS', '1', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AO', '1', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AI', '1', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AM', '1', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AS', '2', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AO', '2', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AI', '2', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AM', '2', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AS', '2', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AP', '1', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AQ', '1', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AR', '1', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AP', '1', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AQ', '1', '2010-08-14');
INSERT INTO dbo_40 VALUES ('AR', '2', '2010-08-10');
INSERT INTO dbo_40 VALUES ('AP', '2', '2010-08-11');
INSERT INTO dbo_40 VALUES ('AQ', '2', '2010-08-12');
INSERT INTO dbo_40 VALUES ('AR', '2', '2010-08-13');
INSERT INTO dbo_40 VALUES ('AP', '2', '2010-08-14');
INSERT INTO dbo_40 VALUES ('LG1', '1', '2010-08-10');
INSERT INTO dbo_40 VALUES ('LG1', '1', '2010-08-11');
INSERT INTO dbo_40 VALUES ('LG1', '1', '2010-08-12');
INSERT INTO dbo_40 VALUES ('LG1', '1', '2010-08-13');
INSERT INTO dbo_40 VALUES ('LG1', '1', '2010-08-14');
INSERT INTO dbo_40 VALUES ('LG2', '2', '2010-08-10');
INSERT INTO dbo_40 VALUES ('LG2', '2', '2010-08-11');
INSERT INTO dbo_40 VALUES ('LG2', '2', '2010-08-12');
INSERT INTO dbo_40 VALUES ('LG2', '2', '2010-08-13');
INSERT INTO dbo_40 VALUES ('LG2', '2', '2010-08-14');
INSERT INTO TestTable ([MAT], [NVE], [NVES]) SELECT
COALESCE ([MAT], 'Total') 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
'Total'
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 [DATE-V] IS NOT NULL THEN
1
ELSE
0
END
) AS [NVES]
FROM
dbo_40
WHERE
1 = 1
AND [TZZ] NOT LIKE 'LG%'
GROUP BY
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
'Total'
END
WITH ROLLUP
) 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], 'Total') 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;
DROP TABLE dbo_40;
I received, I didn't get an SQL Server error...
Bookmarks