回答

收藏

从2个不同的表计算(数量*价格)的总和

技术问答 技术问答 277 人阅读 | 0 人回复 | 2023-09-14

我有两个表如下
) Z/ d$ E% f6 a2 I7 hPRODUCT 桌子* _5 c" R' j0 J8 N$ v5 W) T
Id | Name | Price+ i" ]& X" ~) _, ~$ P
和一张ORDERITEM桌子( G5 v$ o3 s0 f5 L5 m
Id | OrderId | ProductId | Quantity4 @; h3 A0 }- `# ?2 e4 z
我想做的是,计算每种产品的小计价格(数量*价格),然后求和整个订单的TOTAL值。
1 k' S7 b% S$ c  S0 }) A1 D6 r我正在尝试这样的事情" V, a; j4 Z! ^" k( K4 b
SELECT Id, SUM(Quantity * (select Price from Product where Id = Id)) as qty2 p$ c& i% r) }) s; U) A& R
FROM OrderItem o  s$ D" F- W0 I7 K0 A9 K  _, G. w/ m
WHERE OrderId = @OrderId( W: X: |( |9 q+ ]: n
但是当然那是行不通的
" _) |; b3 A" ?0 f任何帮助表示赞赏!, W) p1 a0 I9 _% n
编辑: 我只想显示整个订单的总数,因此基本上是OrderItem中每一行的Quantity * Price的总和。这是一些示例数据。' M: W0 N& A) z$ k( L% U0 d
样本数据
, X; ^/ A' N1 s3 G4 i桌子产品$ E1 N3 h/ e( v- i' {/ C
Id     Name            Price  " G& Z! L) L3 v0 s. K6 O
1      Tomatoes        20.09    % _: s( {' T9 q, o/ M6 L0 Y; E
4      Cucumbers       27.72    " u2 u9 R( Q* U* l8 S' f' |5 J) n
5      Oranges         21.13    & X' E. K& q% E) {
6      Lemons          20.05" g6 y# h# |( X( U3 E$ H
7      Apples          12.05, n" B$ L# q  M
表OrderItem- s* X  Z, I  \$ y! n  v5 q* B- k4 @
Id         OrderId        ProductId        Quantity
; }4 r3 ^+ s: ]) s5 p6 [+ Y151        883            1                22
, c' a# n) ], C( i; {152        883            4                11
$ K4 f2 V- P+ Y) ?% o6 @, B153        883            5                8; h& ~) ~* \6 c- X! M* Q' L
154        883            6                62/ f9 p4 _0 {' ]6 ~
中号
3 H5 Z1 J" Q1 C" z( m$ j6 m               
( M& v; q9 m. e3 W, f9 G解决方案:2 U2 }# I( C3 F& ]# h/ r
               
( _( `, E. }" u! h- y" \$ z8 A* x0 Z. O
# C( l1 U2 c' a+ S% S7 n9 h0 e! M) r2 u! q/ P
                使用:
  s1 b  b/ S8 I  SELECT oi.orderid,
3 k% y1 a# ?) Z/ W3 W; u         SUM(oi.quantity * p.price) AS grand_total,
7 k2 e; r, |: A' M    FROM ORDERITEM oi
0 N  P% t% w+ {. }6 V' a    JOIN PRODUCT p ON p.id = oi.productid3 s3 f: n# V0 p4 G2 u* X
   WHERE oi.orderid = @OrderId
$ K: O* B8 G9 y9 c: u$ _: i; YGROUP BY oi.orderid
! S& v+ P& m6 [4 V/ S1 ~请注意,如果oi.quantity或p.price为null,则SUM将返回NULL。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则