2015-11-17 172 views
0

enter image description here只能選擇一個記錄,如果有記錄

的某些相同的值在SQL的不止一個,我想所有的記錄,但在列值RM發生MCCU twice..but我在的情況下,可以不顯着,因爲這兩個值的雜項的值都不一樣..

我怎麼能做出是否MCCU有一個以上的RM,然後只選擇那些在POSI列和處於較高位置的一個專欄,將他們的兩個數值加起來組合在一起。希望想法解決它。非常感謝你!

這是我的SQL語句

select * from Oclaimc Where cono='NP' and CLNO='7150000032' 
+1

您可以編輯的問題,並添加想要的結果呢? (並標記使用的dbms ...) – jarlh

+0

@jarlh - 您可以通過附加圖像進行假設。 – pedram

+0

@curiousguy,我不知道是什麼工具... – jarlh

回答

1

沒有列名misc在你的形象。我假設你需要總計gamntMiscgttlMisc

所以試試這個。需要時添加其他列。

select max(CONO) as CONO,max(CLNO) as CLNO,max(posi) as posi,MCCU, 
sum(gamntMisc) as totalgamntMisc,sum(gttlMisc) as totalgttlMisc from Oclaimc 
where cono='NP' and CLNO='7150000032' 
group by mccu 

注意:如果刪除where子句,查詢將失敗。如果你需要這個結果對於conoclno每個組合則by子句改變組 group by cono,clno,mccu

+0

嗨..非常感謝你! 但我不是很明白,你能解釋我,我欣賞它:) 1)cono和clno的最大功能意味着什麼?因爲當我谷歌最大功能,這意味着返回所選列的最大值。 2)爲什麼羣由mccu是必要的?因爲當我刪除它時,查詢無法運行。 真正讚賞。 – Jan

+0

所以這個查詢是由'mccu'分組的,因爲你有3個不同的值,這就是你在輸出中需要的值。按函數分組最重要的規則是,select語句中的列應該是按照子句劃分的,否則它們應該使用任何聚合函數。現在即使'conc'和'clno'值對於每一組'mccu'都是相同的,SQL將不知道它們是否是。因此,使用Max可以讓我們按規則繞過組並獲得所需的結果。 – Utsav

+0

你可以進一步谷歌'group by'並做一些案例研究來更好地理解它。 – Utsav

0

這可能會幫助:

select * 
    from oclaimc 
where cono = 'NP' 
    and clno = '7150000032' 
    and mccu <> 'RM' 

union 

select * 
    from (select * 
      from oclaimc 
     where cono = 'NP' 
      and clno = '7150000032' 
      and mccu = 'RM' 
     order by posi) 
where rownum = 1