1

SQL Server 2005 を使用しており、請求書 1 件の合計金額を取得したい

現在の出力:

Invoice     price    
-------------------
1234       2000    
1234       2500     
9012        3000       
3456        1000       

しかし、私の選択フィールド(これは価格用です)はすでに長く、合計を追加する方法がわかりません。

   RIGHT('000000000000'+ convert(varchar,cast(A.IVC_ForeignGrossAmt as decimal(9,2))),13) as IVC_ForeignGross,

予想される出力は次のようになります。

Invoice     price   
-------------------
1234       4500        
1234       4500       
9012        3000       
3456        1000        
4

5 に答える 5

2

次のように、相関サブクエリを使用します。

SELECT
  Invoice,
  (SELECT SUM(t2.price)
   FROM table1 t2
   WHERE t1.invoice = t2.invoice) price           
FROM Table1 t1;

SQL フィドルのデモ

これにより、次のことが得られます。

| INVOICE | PRICE |
-------------------
|    1234 |  4500 |
|    1234 |  4500 |
|    9012 |  3000 |
|    3456 |  1000 |
于 2013-01-01T14:04:25.320 に答える
2

SUM-OVERで使用できますPARTITION BY Invoice( a に似ていますGroup By):

SELECT
   Invoice, SUM(price) OVER (PARTITION BY Invoice) AS price   
FROM 
   dbo.Table

(ただし、RIGHT('000000000000...質問の部分についてはわかりません)

于 2013-01-01T14:07:17.550 に答える
0

あなたが意味するアウトプットは、

Invoice     price   
-------------------
1234       4500             
9012        3000       
3456        1000 

あなたは試すことができます

SELECT INVOICE.ID, SUM(PRICE) FROM INVOICE
GROUP BY INVOICE.ID
于 2013-01-01T14:04:04.297 に答える
0
SELECT Invoice, SUM(price) FROM table1 GROUP BY Invoice;
于 2013-01-01T14:06:22.300 に答える
0

SUM請求書に基づいて価格を設定し、必要に応じて価格GROUP BYをフォーマットするだけです。

SELECT A.Invoice, 
RIGHT('000000000000'+ convert(varchar,cast(SUM(A.IVC_ForeignGrossAmt)
as decimal(9,2))),13) as IVC_ForeignGross 
FROM yourTable A
GROUP BY Invoice;
于 2013-01-01T14:07:44.940 に答える