2012-12-03 31 views
1

好吧,我很抱歉模糊標題COS我不知道如何把這個。 這是我的問題。使用Aggregate來總結行SQL

CREATE TABLE dwd_temp (con VARCHAR2(10),line_no VARCHAR2(10),wgt NUMBER,pallet  VARCHAR2(10)); 
insert INTO dwd_temp VALUES('a','1',10,NULL); 
insert INTO dwd_temp VALUES('b','1',11,'x'); 
insert INTO dwd_temp VALUES('b','2',12,'x'); 
insert INTO dwd_temp VALUES('b','3',13,'y'); 

現在我的要求就是要「取代」具有相同的「托盤」 是在結束我需要一個查詢有一條線,上面寫着 B,1,23線,X代替托盤爲'x'的兩條線。 所以我的結果應該是

a   1   10   null 
b   1   23   x 
b   3   13   y 
+0

在你結果你有一個,C列在4列,這是不存在於源數據。另外我不明白爲什麼在3列和最後一列有15個結果。 – sufleR

+0

抱歉 - 我錯誤地使用了一個不同的例子。 –

回答

0
select con, min(line_no), sum(wgt), pallet 
from dwd_temp 
group by con, pallet 
+0

這是行不通的,因爲你按line_no(1和2)分組,但首選結果只有1。 – sufleR

+0

@ sufleR:你說得對。我糾正了這一點。 –

1

VARCHAR2建議你使用的是Oracle數據庫。

select 
    con, min(line_no), sum(wgt), pallet 
from dwd_temp 
group by pallet, con; 

select 
    min(con), min(line_no), sum(wgt), pallet 
from dwd_temp 
group by pallet; 

SQLFiddle

答案將取決於你想要什麼分組做。

+0

感謝您的回答!是的,我正在使用oracle,但我需要在SQLSERVER上運行查詢 - 目前正在使用的計算機上安裝了Oracle,所以我正在使用它。 –

+0

@PaulusNijmaan這兩個答案都應該在SQLServer上工作。開發時應避免使用兩種不同的RDMS環境。這將在未來避免許多問題。 – sufleR