回答

收藏

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

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

我有两个表如下
$ {3 y% {* g$ M$ DPRODUCT 桌子
* q) Y$ ^6 ]- l; gId | Name | Price) r. }) y  n0 i) ^# @$ g
和一张ORDERITEM桌子
" t" |6 j4 P$ A: eId | OrderId | ProductId | Quantity
. n  D. S  p; _* D; o我想做的是,计算每种产品的小计价格(数量*价格),然后求和整个订单的TOTAL值。
" e* J3 O, @; r我正在尝试这样的事情# i9 ^0 s) f  G( r; ~& A* ^
SELECT Id, SUM(Quantity * (select Price from Product where Id = Id)) as qty
) u5 A5 M6 g/ z2 I% JFROM OrderItem o2 ~: Q" d7 n7 ~, m
WHERE OrderId = @OrderId
. m/ h. X/ [7 \) E' K4 W: ?但是当然那是行不通的
, I6 c, l9 u+ ?3 ?  F4 ?任何帮助表示赞赏!( j2 [% W0 ~& R3 N
编辑: 我只想显示整个订单的总数,因此基本上是OrderItem中每一行的Quantity * Price的总和。这是一些示例数据。
; H* T+ ?, ^# u) j. z3 R, n% r样本数据
. w. u" [5 B! C& o2 I! m! z桌子产品  c4 h7 ~/ A1 k
Id     Name            Price  + G# T3 x2 H* v/ U. ^4 j5 u
1      Tomatoes        20.09    $ k" a' w  J1 I) E
4      Cucumbers       27.72   
, ]1 S9 D) ?5 ^. ^5      Oranges         21.13   
4 w, m0 q0 r; y  X) Y( F; V, _6 l6      Lemons          20.05! |$ T" y. v% {+ R* e& c" j0 s
7      Apples          12.05
/ S8 d5 o# Q& B- p3 z- J9 W表OrderItem
2 |0 x2 v  m* M: s8 ^- L" wId         OrderId        ProductId        Quantity1 J; F( Y$ ^& _- z" p4 I
151        883            1                22, t) s, i- [7 C4 r2 b
152        883            4                11
/ p9 p' ^* [; }0 ]+ `8 L153        883            5                8
( z6 {; X, T' a* ?  `154        883            6                62! n* s3 ?5 X2 T! u3 Y7 R1 f. L6 D
中号2 M' G, x0 J3 g' f
                ( V3 {% J2 H+ _- O' w
解决方案:
. y8 L3 a! F7 ?                - s0 f, m- Z. X0 T
1 h+ Y  n6 Q* {, g* x- r3 z

8 h& z2 g( R, ~. ]- ~" C8 D                使用:
0 D# j, y/ H( N3 C) @  SELECT oi.orderid,8 v/ E# |4 I8 x; n$ o8 W) r* W
         SUM(oi.quantity * p.price) AS grand_total,
% o9 h8 t% o. o' b+ }) c/ O    FROM ORDERITEM oi
  m7 |! E% T; l+ p    JOIN PRODUCT p ON p.id = oi.productid6 O/ W7 }* p1 o5 g1 x+ B9 c
   WHERE oi.orderid = @OrderId
" x) p# U0 f3 p* q$ ?; gGROUP BY oi.orderid$ D% b% F  n1 L
请注意,如果oi.quantity或p.price为null,则SUM将返回NULL。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则