0

SQL Server でいくつかのデータをGROUP BY取得しています。結果を取得したいのですが、動作させることができません。

これは私の現在のSQLステートメントです:

SELECT
   PA01201.CUSTNMBR, 
   PA01201.PACONTNUMBER, 
   PA01201.PAcontid, 
   PA01100.CUSTNMBR AS Expr1, 
   PA01100.PAcontname, 
   PA01100.PAcontid AS Expr2, 
   PA01100.PACONTNUMBER AS Expr3, 
   PA01201.PAprojname, 
   PA01201.PAPROJNUMBER
   PA01201.Cost

FROM        
   PA01201 
INNER JOIN
   PA01100 ON PA01201.CUSTNMBR = PA01100.CUSTNMBR AND 
              PA01201.PACONTNUMBER = PA01100.PACONTNUMBER AND 
              PA01201.PAcontid = PA01100.PAcontid 

次の結果が返されます。

CUSTNMBR    PACONTNUMBER    PAcontid    Expr1   Pacontname  Expr2   Expr3   Paprojname  PAPROJNUMBER    Cost
AD001           8051    8051    AD001           Company 1   8051    8051    Project 1   08051P          951
AP001           8063    8063    AP001           Company 2   8063    8063    Project 2   08063P          2651
AR002           8096    8096    AR002           Company 3   8096    8096    Project 3   08096P          807
AR003           9033    9033    AR003           Company 4   9033    9033    Project 4   09033P          458
AS001           8013    8013    AS001           Company 5   8013    8013    Project 5   08013C          3297
AS001           8013    8013    AS001           Company 5   8013    8013    Project 5   08013P          48
AS001           8013    8013    AS001           Company 5   8013    8013    Project 5   08013P          641
AR002           8096    8096    AR002           Company 3   8096    8096    Project 3   08096P          1000

で結果をグループ化できるようにしたいと思いPAcontidます。

誰でもこれを行う最も簡単な方法をアドバイスできますか?

句を挿入しようとするとGROUP BY、他の列 (CUSTNMBR、PAPROJNUMBER) などが句に含まれていないというエラーが表示されます????

どんな助けでも大歓迎です。

すべての作業は SQL Server Management Studio 2008 R2 で行われています


申し訳ありませんが、前回のコラム (コスト) が届きませんでした。適切なフィールドを表示するように質問を更新しました。基本的に私がやろうとしているのは、各 Pacontid の総コストを取得することです。

結果を次のようにしたいと思います.......

CUSTNMBR    PACONTNUMBER    PAcontid    Expr1   Pacontname  Expr2   Expr3   Paprojname  PAPROJNUMBER    Cost
    AS001           8013    8013    AS001           Company 5   8013    8013    Project 5   08013P          3986
    AD001           8051    8051    AD001           Company 1   8051    8051    Project 1   08051P          951
    AP001           8063    8063    AP001           Company 2   8063    8063    Project 2   08063P          2651
    AR002           8096    8096    AR002           Company 3   8096    8096    Project 3   08096P          1807
    AR003           9033    9033    AR003           Company 4   9033    9033    Project 4   09033P          458

これは私がやろうとしていることで可能ですか?

4

3 に答える 3

1

を使用する場合GROUP BY、選択したすべての列がGROUP BY句内にある必要があります。そうでない場合は、aggregate関数 (例: SUMMAX、) でMIN囲まれている必要があります。AVG

詳細については、これを確認してください


あなたの場合、考えられる解決策は次のとおりです。

SELECT  MAX(PA01201.CUSTNMBR),
        MAX(PA01201.PACONTNUMBER),
        PA01201.PAcontid,
        MAX(PA01100.CUSTNMBR AS Expr1,
        MAX(PA01100.PAcontname),
        MAX(PA01100.PAcontid) AS Expr2,
        MAX(PA01100.PACONTNUMBER) AS Expr3,
        MAX(PA01201.PAprojname),
        MAX(PA01201.PAPROJNUMBER)
FROM       PA01201
INNER JOIN PA01100 ON PA01201.CUSTNMBR = PA01100.CUSTNMBR
       AND PA01201.PACONTNUMBER = PA01100.PACONTNUMBER
       AND PA01201.PAcontid = PA01100.PAcontid
GROUP BY PA01201.PAcontid
于 2012-06-19T12:05:38.860 に答える
1

おそらく、それらを視覚的に「グループ化」することを意味しますが、SQL と同じ方法ではありません。

   Order by CUSTNMBR , PAcontid

これにより、左側に顧客のリストが順番に表示され、次に PAcontid のグループのデータが表示されます。

また

   Order by PAcontid ,CUSTNMBR 

これにより、PAcontid で並べ替えられ、顧客が並べ替えられます。

通常、あなたは言うでしょう

ann apple 10
pete strawberry 3
Lucy strawberry 12

select fruit, sum(count) as total from lunch group by fruit

取得するため

apple 10
strawbery 15
于 2012-06-19T12:21:10.673 に答える
1

GROUP BY選択したすべての列を句に追加します。ただし、最初に目的の列から始めます: PAcontid.

SELECT
    PA01201.CUSTNMBR, 
    PA01201.PACONTNUMBER, 
    PA01201.PAcontid, 
    PA01100.CUSTNMBR AS Expr1, 
    PA01100.PAcontname, 
    PA01100.PAcontid AS Expr2, 
    PA01100.PACONTNUMBER AS Expr3, 
    PA01201.PAprojname, PA01201.PAPROJNUMBER
FROM
    PA01201 
INNER JOIN
    PA01100 ON PA01201.CUSTNMBR = PA01100.CUSTNMBR AND 
    PA01201.PACONTNUMBER = PA01100.PACONTNUMBER AND 
    PA01201.PAcontid = PA01100.PAcontid 
GROUP BY 
    PAcontid, CUSTNMBR, PACONTNUMBER, PAcontname, PAprojname, PAPROJNUMBER
于 2012-06-19T12:08:31.290 に答える