我正在寻找动态生成查询的Java swing(它不是我的代码)中的错误。 对于大查询感到抱歉,但我要在此处报告:
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
似乎分组......不分组! :-(任何想法?
答案 0 :(得分:0)
分组依据与聚合函数一起使用,此查询没有。
如果您执行类似以下的查询:
select a, b, c from a_table group by a, b
你会得到:
a和b列的不同值
c
这就是为什么“分组不分组”,这不是你怎么做的。