I ran the following:
Code:
CREATE TABLE dbo_42
(
[TZZ] VARCHAR(3),
[RM] VARCHAR(1),
[DV] VARCHAR(1) NULL
)
INSERT INTO dbo_42 VALUES ('1D', '3', '3')
INSERT INTO dbo_42 VALUES ('1D', '4', NULL)
INSERT INTO dbo_42 VALUES ('1D', '6', '3')
INSERT INTO dbo_42 VALUES ('1D', '7', '3')
INSERT INTO dbo_42 VALUES ('1D', '7', '3')
INSERT INTO dbo_42 VALUES ('1D', '6', '3')
INSERT INTO dbo_42 VALUES ('1D', '4', '3')
INSERT INTO dbo_42 VALUES ('1D', '5', '3')
INSERT INTO dbo_42 VALUES ('1D', '1', '3')
SELECT
COALESCE ([MAT], 'Tot') AS [MAT],
[A],
[B],
[C],
[D],
([A] + [B] + [C]) / CAST([D] AS DECIMAL(10,2)) AS [PERC]
FROM
(
SELECT
LEFT (TZZ, 2) AS MAT,
COUNT (*) AS [D],
SUM (
CASE
WHEN (
[RM] = '1'
OR [RM] = '2'
OR [RM] = '3'
OR [RM] = '4'
)
AND [DV] IS NOT NULL THEN
1
ELSE
0
END
) AS [A],
SUM (
CASE
WHEN (
[RM] = '5'
AND [DV] IS NOT NULL
) THEN
1
ELSE
0
END
) AS [B],
SUM (
CASE
WHEN (
(
[RM] = '6'
OR [RM] = '7'
)
AND [DV] IS NOT NULL
) THEN
1
ELSE
0
END
) AS [C]
FROM
dbo_42
WHERE
1 = 1
AND [TZZ] NOT LIKE 'LG%'
GROUP BY
LEFT (TZZ, 2) WITH ROLLUP
) AS SubQs;
DROP TABLE dbo_42
And I get the following output:
Code:
MAT A B C D PERC
---- ----------- ----------- ----------- ----------- ----------------------
1D 3 1 4 9 0.88888888888
Tot 3 1 4 9 0.88888888888
I'm assuming you are in a culture that uses commas for decimal points instead of a period. That is likely a setting on the table/database itself, via localization.
Bookmarks