我需要莫名其妙的做SUM(mnozstvi)
和SUM(prostoje)
用于具有相同dtzdanitpln +相同podminky +相同jmeno_uziv的细胞。还后,我集团是由这3个条件,同时具有SUM(mnozstvi)
我需要有AVG功能为他们mnpracovniku,naklad列和hdudrzbapracovisteSUM和多列SAME值的细胞的AVG
我搜索的解决方案做相同的id细胞的SUM在另一个细胞,但我得到的错误,当我尝试改变我的group by
,例如,如果我尝试删除从集团PRAC,我得到这个:
消息8120,级别16,状态1,行20列“temptab.pracoviste”在选择列表中是 无效,因为它不包含在 聚合函数或GROUP BY子句中。
消息8120,级别16,状态 1,因为它不是在聚合函数或 GROUP BY子句行包含列20“temptab.pracoviste”是在选择列表 无效。
消息8120,级别16,状态1,行20列 'temptab.pracoviste'在选择列表中无效,因为它不是包含在集合函数或GROUP BY子句中的 。
消息 8120,级别16,状态1,行20列“temptab.pracoviste”是 在选择列表中无效,因为它不是在任何一个 聚合函数或GROUP BY子句中包含。
select
count (temptab.idhdok) as pocet,
temptab.ucet_obd,
temptab.dtzdanitpln,
substring (temptab.podminky_text, 4,2) as podminky,
temptab.jmeno_uziv,
temptab.textpozn2,
count(temptab.pracoviste) as prac,
temptab.mnpracovniku,
SUM(temptab.hdmzda_naklad_smena) as naklad,
temptab.hdodpis_naklad_smena,
(select count(*) from qsdok where (cis_zbozi = 'PROSTOJ 03.3' or cis_zbozi = 'PROSTOJ 07' or cis_zbozi = 'PROSTOJ 08' or cis_zbozi = 'PROSTOJ 10') and qsdok.idhdok=temptab.idhdok) as prostoje,
(select sum(qhdok_udr.hdccenaval2)
from qhdok_udr
left join typdok on typdok.idtypdok = qhdok_udr.idtypdok
where
typdok.typ_dok = 'UDR' and
qhdok_udr.podminky_text != 'UDRMECH' and
qhdok_udr.ucet_obd like '%2015.09%' and
qhdok_udr.cis_zbozi_pracovisteadd like temptab.pracoviste
) as hdudrzbapracoviste,
(select sum(qhdok_udr.hdccenaval2)
from qhdok_udr
left join typdok on typdok.idtypdok = qhdok_udr.idtypdok
where
typdok.typ_dok = 'UDR' and
qhdok_udr.podminky_text != 'UDRMECH' and
qhdok_udr.ucet_obd like '%2015.09%' and
(qhdok_udr.cis_zbozi_pracovisteadd like 'M%')
) as hdudrzbacelkem,
(select sum(qhdok_udr.hdccenaval2)
from qhdok_udr
left join typdok on typdok.idtypdok = qhdok_udr.idtypdok
where
typdok.typ_dok = 'UDR' and
qhdok_udr.podminky_text = 'UDRMECH' and
qhdok_udr.ucet_obd like '%2015.09%' and
qhdok_udr.cis_zbozi_pracovisteadd like temptab.pracoviste
) as hdmechanikpracoviste,
(select sum(qhdok_udr.hdccenaval2)
from qhdok_udr
left join typdok on typdok.idtypdok = qhdok_udr.idtypdok
where
typdok.typ_dok = 'UDR' and
qhdok_udr.podminky_text = 'UDRMECH' and
qhdok_udr.ucet_obd like '%2015.09%'
) as hdmechanikcelkem,
sum(temptab.mnZmetky) as mnZmetky,
sum(temptab.mnTuk) as mnTuk,
sum(temptab.mnKukurice) as mnKukurice,
sum(temptab.mnFolie) as mnFolie,
sum(temptab.mnozstvi) as mnozstvi,
sum(temptab.mnZmetky) * 24.7 as hdZmetky,
sum(temptab.mnTuk) * 30 as hdTuk,
sum(temptab.mnKukurice) * 10 as hdKukurice,
sum(temptab.mnFolie) * 130 as hdFolie,
sum((temptab.mnZmetky * 24.7)+(temptab.mnTuk * 30)+(temptab.mnKukurice * 10)+(temptab.mnFolie * 130)) as hdCelkem,
sum((temptab.mnZmetky * 24.7)+(temptab.mnTuk * 30)+(temptab.mnKukurice * 10)+(temptab.mnFolie * 130))/isnull(nullif(sum(temptab.mnozstvi),0),1) as hdKs
from
(select
qhdok.idhdok,
qhdok.ucet_obd,
qhdok.dtzdanitpln,
qhdok.podminky_text,
qhdok.hdmzda_naklad_smena,
qhdok.hdodpis_naklad_smena,
pracoviste = case
when qhdok.podminky_text like 'KB%' then 'MKB'
when qhdok.podminky_text like '2UP%' then 'MUP'
when qhdok.podminky_text like 'M3%' then 'M3'
when qhdok.podminky_text like 'PUK%' then 'PUK'
when qhdok.podminky_text like 'M1%' then 'M1'
when qhdok.podminky_text like 'M2%' then 'M2'
else ''
end,
qhdok.jmeno_uziv,
qhdok.mnpracovniku,
isnull((select sum(HDHDOKPOZNCISLO) from qhdokpozn where qhdokpozn.idhdok = qhdok.idhdok and qhdokpozn.KODTHDOKPOZN like 'VYRZMP'),0) as mnZmetky,
isnull((select sum(HDHDOKPOZNCISLO) from qhdokpozn where qhdokpozn.idhdok = qhdok.idhdok and qhdokpozn.KODTHDOKPOZN like 'VYRZMT'),0) as mnTuk,
isnull((select sum(HDHDOKPOZNCISLO) from qhdokpozn where qhdokpozn.idhdok = qhdok.idhdok and qhdokpozn.KODTHDOKPOZN like 'VYRZMK'),0) as mnKukurice,
isnull((select sum(HDHDOKPOZNCISLO) from qhdokpozn where qhdokpozn.idhdok = qhdok.idhdok and qhdokpozn.KODTHDOKPOZN like 'VYRZMF'),0) as mnFolie,
isnull((select top 1 cast(HDOKPOZNMEMO as varchar(max)) from qhdokpozn where qhdokpozn.idhdok = qhdok.idhdok and qhdokpozn.KODTHDOKPOZN like 'VYRPOZ'),'') as textpozn2,
isnull((select sum(dbo.fn_UO_mnPocetvAltMJ(qsdok.idzbozi, null, null, 'KS', qsdok.mncelkempocet)) from qsdok where qsdok.idhdok = qhdok.idhdok and qsdok.kod_pohyb ='P30' and qsdok.mncelkempocet>0 and
(qsdok.slozka_ident not like 'pmic%') and charindex('MIX',qsdok.nazev_zbozi)=0 and qsdok.cis_zbozi not like 'PROSTOJ%' and qsdok.cis_zbozi != 'POPCORN'),0) as mnozstvi
from qhdok_smena qhdok
where qhdok.typ_dok = 'SPU' and (qhdok.idhdok_vzor = 41875 or qhdok.idhdok_vzor = 239530) and qhdok.ucet_obd like '%2015.09%' and qhdok.podminky_text like '%%%'+'%' and (qhdok.podminky_text like 'M3%' or qhdok.podminky_text like '2UP%' or qhdok.podminky_text like 'KB%' or qhdok.podminky_text like 'M1%' or qhdok.podminky_text like 'M2%')
-- qhdok.idhdok,qhdok.ucet_obd, qhdok.idhdok, qhdok.dtzdanitpln,qhdok.podminky_text, qhdok.hdmzda_naklad_smena, qhdok.hdodpis_naklad_smena, qhdok.jmeno_uziv, qhdok.textpozn2, qhdok.mnpracovniku
) temptab
group by temptab.idhdok, temptab.ucet_obd, temptab.dtzdanitpln, temptab.pracoviste, substring (temptab.podminky_text, 4,2), temptab.jmeno_uziv, temptab.textpozn2, temptab.mnpracovniku, temptab.hdodpis_naklad_smena, temptab.hdmzda_naklad_smena
这个例子我有什么什么,我需要: EXAMPLE
谢谢,我得到了sum,avg,min等聚合的东西。我根据这个改变了我的组,但是我仍然有我的结果留下应该合并的两行分开(在我的例子中它应该是这些,有jmeno_uziv =“C”和“dtzdanitpln = 2015-09-11 00:00:00”,我认为这是因为我有temptab.idhdok在集团仍然..因为每个idhdok是独一无二的,所以它不会将它们合并在一起..现在我的分组看起来像这样:group by temptab.idhdok,temptab.ucet_obd,temptab.dtzdanitpln –
你是对的,因为你不想为不同的'idhdok ',它不是列在“我希望每个__________________有一个结果记录”的间隙中的列,因此不能成为GROUP BY子句的一部分。 –
很好,现在它工作:)谢谢,仍然可能会来如果我能找到一些东西,明天回来需要修复。 –