[英]Getting correct result with Group By query in SQL Server
我有以下查詢
with CTE as
(
select Barkod, sum(kolicina) as Kolicina
from stocks
where Barkod = '555'
group by Barkod
)
select s.Barkod, s.Kategorija, s.Artikal, s.Opis, s.Kolicina, s.N_cena,
s.N_Iznos, s.P_cena, s.P_Iznos, s.datum, s.Golemina from Stocks as s
join CTE as b
on b.Barkod = s.Barkod
該查詢的結果是
555 КОШУЛА QWRSF QWRSF 10 10.00 NULL 20.00 NULL NULL NULL
555 КОШУЛА QWRSF QWRSF 1 10.00 NULL 20.00 NULL NULL NULL
我需要得到以下結果
555 КОШУЛА QWRSF QWRSF 11 10.00 NULL 20.00 NULL NULL NULL
因此,我需要對Kolicina字段進行匯總,並將它們全部合並為一行。
您非常接近...僅是最后一個分組。
select s.Barkod, s.Kategorija, s.Artikal, s.Opis, sum(s.Kolicina), s.N_cena,
s.N_Iznos, s.P_cena, s.P_Iznos, s.datum, s.Golemina from Stocks as s
group by s.Barkod, s.Kategorija, s.Artikal, s.Opis, s.N_cena,
s.N_Iznos, s.P_cena, s.P_Iznos, s.datum, s.Golemina
您可能希望求和的任何其他行都可以移出組,並在選擇行中將sum()放到該行上。
您需要找到某種方式來聚合其他列。
例如
select
Barkod,
sum(kolicina) as Kolicina,
Max(Kategorija) as Kategorija,
Max(Artikal) as Artikal,
Max(Opis) as Opis,
Max(N_cena) as N_cena,
Max(N_Iznos) as N_Iznos,
Max(P_cena) as P_cena,
Max(P_Iznos) as P_Iznos,
Max(datum) as datum,
Max(Golemina) as Golemina
from
stocks
where
Barkod = '555'
group by
Barkod
不過,這種模式可能會提示您的數據未正確歸一化。
或者,如果非求和列的Barkod值始終相同,則可以執行以下操作:
select
Barkod,
sum(kolicina) as Kolicina,
Kategorija,
Artikal,
Opis,
N_cena,
N_Iznos,
P_cena,
P_Iznos,
datum,
Golemina
from
stocks
where
Barkod = '555'
group by
Barkod,
Kategorija,
Artikal,
Opis,
N_cena,
N_Iznos,
P_cena,
P_Iznos,
datum,
Golemina
您需要將..., s.Kolicina, ...
更改為..., b.Kolicina, ...
以從table b
獲取SUM
。 您所做的只是從table s
選擇所有Kolicina
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.