1

以下のような表があります

名前IDSub1Sub2
Raj 1 75 76   
ラメッシュ28558   
Sekhar 3 65 55   
シッダールス49585    
Raj 1 52 75   
Sekhar 3 97 95   
シッダールス57885   

次のような出力が必要です

名前IDSub1Sub2
ラージ1127151  
ラメッシュ28558   
セカール3162150    
シッダールス49585  
シッダールス57885   

つまり、件名の列とID列でグループ化されたマークの合計が必要です。名前を表示する必要がありますが、GroupBy句に含めるべきではありません。目的の結果を得るには、どのようにクエリを作成する必要がありますか?前もって感謝します。

4

3 に答える 3

3

これを試して :-

with cte as 
(  Select row_number() over(partition by a.id order by a.ID) rn,
   a.name,a.id , b.sum1, b.sum2  from
   sample a
   inner join 
  ( Select id,sum(sub1) Sum1,sum(sub2) as sum2 
    from Sample 
    group by id)b
  on a.id=b.id
)
Select name,id,sum1,sum2 from cte where rn=1

またはSum、andOver句を使用しますSubquery

 Select *
 from 
 (
  Select name,id,sum(sub1) over (partition by id) sub1,
  sum(sub2) over(partition by id) sub2,
  row_number() over(partition by Id order by id) rn
  from sample
 ) s
 where rn=1 
 order by s.name

SQLFIDDLEデモ

于 2013-03-24T11:54:20.097 に答える
0

すべての説明の後、それは実際には次のように単純なようです。

select Name
  , Id
  , Sub1 = sum(Sub1)
  , Sub2 = sum(Sub2)
from MyTable
group by Name, Id
order by Id

デモ付きのSQLフィドル

于 2013-03-24T11:38:41.113 に答える
0

group by句から除外する必要がある場合Name、IDが一意の識別子であり、IDのみが1つの名前にのみ割り当てられていると仮定して、Nameを使用して集計します。MAX()

SELECT
    MAX(Name) AS [Name]
   ,Id
   ,SUM(Sub1) AS [Sub1]
   ,SUM(Sub2) AS [Sub2]

FROM
    MyTable

GROUP BY
    Id

ORDER BY
    Id
于 2015-11-06T06:06:49.920 に答える