March 24, 2014 at 11:37 am
I run this code:
SELECT
Gruppo_Assegnatario,
[100] as stato1, [101] as stato2, [102] as stato3
FROM
(
select
CASE_ID_,
Stato,
Gruppo_Assegnatario
FROM TicketInevasiPerGruppoEStato
) AS SourceTable
PIVOT (COUNT(CASE_ID_) FOR Stato in ([100], [101], [102])) AS PivotTable
order by Gruppo_Assegnatario
that extracts only zeros (columns "stato1", "stato2", "stato3"):
Gruppo_Assegnatariostato1stato2stato3
SDB_BE Vita Antiriciclaggio0 00
SDB_BE Vita Assistenza clienti000
SDB_BE Vita Emissione000
SDB_BE Vita Gestione Rendite000
SDB_BE Vita Liquidazioni000
SDB_BE Vita Selezione000
SDB_BE Vita Sinistri000
SDB_BE Vita Tecnico comm.le000
SDB_BE Vita Variazioni000
SDB_FE Vita000
SDB_GBS Liquidazioni000
SDB_GBS Variazione000
SDB_OP Group Life000
SDB_OP Risparmio000
SDB_TC Group Life000
SDB_TC Risparmio000
Unlike the "SourceTable":
select
CASE_ID_,
Stato,
Gruppo_Assegnatario
FROM TicketInevasiPerGruppoEStato
extracts
CASE_ID_ Stato Gruppo_Assegnatario
HD0000003736734 AssegnatoSDB_GBS Variazione
HD0000003736739 AssegnatoSDB_GBS Variazione
HD0000003736743 AssegnatoSDB_GBS Variazione
HD0000003736783 AssegnatoSDB_GBS Variazione
HD0000003736806 SospesoSDB_BE Vita Selezione
HD0000003736815 AssegnatoSDB_BE Vita Sinistri
HD0000003736816 AssegnatoSDB_GBS Variazione
HD0000003736821 AssegnatoSDB_GBS Variazione
HD0000003736840 AssegnatoSDB_GBS Variazione
How can I get the right count in the first data mining replacing the zeros (columns "stato1", "stato2", "stato3")?
March 24, 2014 at 11:51 am
Why are you using 100, 101 & 102 for statos when you don't seem to have that values in your stato column?
March 25, 2014 at 2:21 am
Luis Cazares (3/24/2014)
Why are you using 100, 101 & 102 for statos when you don't seem to have that values in your stato column?
Dear Luis,
the issue is that the values are present as you can see from "SourceTable". Thus 100, 101 & 102 columns are mandatory in order to expose the values. Unlike the issue is why the values are always zero even thought the are record 531 in the "SourceTable".
For instance look at (COUNT(CASE_ID_).
March 25, 2014 at 7:25 am
What Luis means is you're pivoting on data that doesn't exist on your test data, which is why the count is coming out as 0.
Take a look at this:
DECLARE @test-2 TABLE
(
CASE_ID_ VARCHAR(30) NOT NULL,
Stato VARCHAR(20) NOT NULL,
Gruppo_Assegnatario VARCHAR(50) NOT NULL
);
INSERT INTO @test-2 (CASE_ID_,Stato,Gruppo_Assegnatario)
VALUES ('HD0000003736734','Assegnato','SDB_GBS Variazione'),
('HD0000003736739','Assegnato','SDB_GBS Variazione'),
('HD0000003736743','Assegnato','SDB_GBS Variazione'),
('HD0000003736783','Assegnato','SDB_GBS Variazione'),
('HD0000003736806','Sospeso','SDB_BE Vita Selezione'),
('HD0000003736815','Assegnato','SDB_BE Vita Sinistri'),
('HD0000003736816','Assegnato','SDB_GBS Variazione'),
('HD0000003736821','Assegnato','SDB_GBS Variazione'),
('HD0000003736840','Assegnato','SDB_GBS Variazione');
--test data
SELECT * FROM @test-2;
-- your query
SELECT
Gruppo_Assegnatario,
[100] as stato1, [101] as stato2, [102] as stato3
FROM
(
select
CASE_ID_,
Stato,
Gruppo_Assegnatario
FROM @test-2
) AS SourceTable
PIVOT (COUNT(CASE_ID_) FOR Stato in ([100], [101], [102])) AS PivotTable
order by Gruppo_Assegnatario;
--pivot
SELECT
Gruppo_Assegnatario,
Sospeso as stato1, Assegnato as stato2
FROM
(
select
CASE_ID_,
Stato,
Gruppo_Assegnatario
FROM @test-2
) AS SourceTable
PIVOT (COUNT(CASE_ID_) FOR Stato in (Sospeso, Assegnato)) AS PivotTable
order by Gruppo_Assegnatario
March 25, 2014 at 7:29 am
I'll also recommend this as a cross-tab which helps with the readability.
SELECTT.Gruppo_Assegnatario,
SUM(CASE WHEN Stato = 'Sospeso' THEN 1 ELSE 0 END) AS Stato1,
SUM(CASE WHEN Stato = 'Assegnato' THEN 1 ELSE 0 END) AS Stato2
FROM@test-2 AS T
GROUPBY T.Gruppo_Assegnatario;
March 25, 2014 at 11:36 am
Thank you. I does work. 🙂
Viewing 6 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply