Я ищу ошибку в свинге Java (это не мой код), которая динамически генерирует запрос.Извините за большой запрос, но я должен сообщить об этом здесь:
select
b.CodiceCommercialeRiferimento as "Comm. Rif.",
b.PartitaIVA as "PartitaIVA",
b.FlgBusteCartotecnica as "Tipo Prodotto",
b.ClasseMerceologica as "Cl.Merc.",
Periodo0.V as Periodo0,
Periodo3.V as Periodo3,
Periodo4.V as Periodo4
from (
select distinct
if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento,
CommercialeRiferimento,
trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
bolle.FlgBusteCartotecnica,
if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica
from bolle
left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento
inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente
left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM
where
CommercialeRiferimento in ('001')
and AnagraficaClientiPI.PartitaIVA in ('0569XXXX000')
and bolle.FlgBusteCartotecnica in ('B','C')
and bolle.ClasseMerceologica like '%%'
) as b left join (
select distinct
if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento,
CommercialeRiferimento,
trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
bolle.FlgBusteCartotecnica,if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,
sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V
from bolle
inner join bollevalori on bolle.recordid = bollevalori.recordid
left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento
inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente
left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM
where
CommercialeRiferimento in ('001')
and AnagraficaClientiPI.PartitaIVA in ('0569XXXX000')
and bolle.FlgBusteCartotecnica in ('B','C')
and bolle.ClasseMerceologica like '%%'
and DataFattura between '2010-01-01' and '2010-11-30'
Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica
) as Periodo0 on
b.CommercialeRiferimento = Periodo0.CommercialeRiferimento
and b.CodiceClientePI = Periodo0.CodiceClientePI
and b.FlgBusteCartotecnica = Periodo0.FlgBusteCartotecnica
and b.ClasseMerceologica = Periodo0.ClasseMerceologica
left join (
select distinct
if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento,
CommercialeRiferimento,
trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
bolle.FlgBusteCartotecnica,
if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,
sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V
from bolle
inner join bollevalori on bolle.recordid = bollevalori.recordid
left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento
inner join AnagraficaClienti as anagraficaclientiPI on bolle.codicecliente = anagraficaclientiPI.codicecliente
left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM
where
CommercialeRiferimento in ('001')
and AnagraficaClientiPI.PartitaIVA in ('0569XXXX000')
and bolle.FlgBusteCartotecnica in ('B','C')
and bolle.ClasseMerceologica like '%%'
and DataFattura between '2008-01-01' and '2008-11-30'
Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica
) as Periodo3 on
b.CommercialeRiferimento = Periodo3.CommercialeRiferimento
and b.CodiceClientePI = Periodo3.CodiceClientePI
and b.FlgBusteCartotecnica = Periodo3.FlgBusteCartotecnica
and b.ClasseMerceologica = Periodo3.ClasseMerceologica
left join (
select distinct
if (CodiceCommRif is null, '', DescrizioneCommRif) as CodiceCommercialeRiferimento,
CommercialeRiferimento,
trim(concat(bolle.CodiceCliente, ' - ', AnagraficaClientiPI.RagioneSociale1)) as CodiceClientePI,
trim(concat(AnagraficaClientiPI.PartitaIVA, ' - ', AnagraficaClientiPI.RagioneSociale1)) as PartitaIVA,
bolle.FlgBusteCartotecnica,
if(DescrizioneCLM is null, '', DescrizioneCLM) as ClasseMerceologica,
sum(if (TipoDocumento = 'N', -ValoreConsegnato, ValoreConsegnato)) as V
from bolle
inner join bollevalori on bolle.recordid = bollevalori.recordid
left join CodiciCommercialiRiferimento on CodiceCommRif = CommercialeRiferimento
inner join AnagraficaClienti as anagraficaclientiPI
on bolle.codicecliente = anagraficaclientiPI.codicecliente
left join classemerceologica on bolle.ClasseMerceologica = classemerceologica.CodiceCLM
where
CommercialeRiferimento in ('001')
and AnagraficaClientiPI.PartitaIVA in ('0569XXXX000')
and bolle.FlgBusteCartotecnica in ('B','C')
and bolle.ClasseMerceologica like '%%'
and DataFattura between '2008-01-01' and '2008-12-31'
Group by CommercialeRiferimento,AnagraficaClientiPI.PartitaIVA,bolle.FlgBusteCartotecnica,ClasseMerceologica
) as Periodo4 on
b.CommercialeRiferimento = Periodo4.CommercialeRiferimento
and b.CodiceClientePI = Periodo4.CodiceClientePI
and b.FlgBusteCartotecnica = Periodo4.FlgBusteCartotecnica
and b.ClasseMerceologica = Periodo4.ClasseMerceologica
where
Periodo0.V is not null
or Periodo3.V is not null
or Periodo4.V is not null
Group by b.CommercialeRiferimento,b.PartitaIVA,b.FlgBusteCartotecnica,b.ClasseMerceologica;
Запрос был больше, я уменьшил его, чтобы он сохранил проблему.Вот результат:
"Comm. Rif." PartitaIVA "Tipo Prodotto" Cl.Merc. Periodo0 Periodo3 Periodo4
Stecca "0569XXXX000 - POSTEM SPA" B "Commesse buste articoli speciali B" 2199544.40 NULL NULL
Stecca "0569XXXX000 - POSTEM SPA" B "Inserti buste/sacchetti B" 3627807.30 NULL NULL
Stecca "0569XXXX000 - POSTEM SPA" B "Prodotti finiti buste/sacchetti B" 8007.80 NULL NULL
Итак, у меня два последних столбца пустые (NULL), тогда как я ожидал некоторых значений.Я попытался удалить последний код SQL (сгруппировать по) и неожиданно получаю:
"Comm. Rif." PartitaIVA "Tipo Prodotto" Cl.Merc. Periodo0 Periodo3 Periodo4
Stecca "0569XXXX000 - POSTEM SPA" B "Inserti buste/sacchetti B" 3627807.30 NULL NULL
Stecca "0569XXXX000 - POSTEM SPA" B "Prodotti finiti buste/sacchetti B" 8007.80 NULL NULL
Stecca "0569XXXX000 - POSTEM SPA" B "Commesse buste articoli speciali B" 2199544.40 NULL NULL
Stecca "0569XXXX000 - POSTEM SPA" B "Commesse buste articoli speciali B" NULL 3714106.25 4210464.05
Stecca "0569XXXX000 - POSTEM SPA" B "Inserti buste/sacchetti B" NULL 2080109.06 2487643.18
Кажется, что группирование ... не группирует!:-( Есть идеи?