回答

收藏

GROUP BY和缺少MONTHS的值的总和

技术问答 技术问答 309 人阅读 | 0 人回复 | 2023-09-12

我仔细阅读了许多示例,并加入了几个示例,以得出以下结论:  Z+ ~- V/ O& Y0 Q  [' l% ]& E
DECLARE @StartDate SMALLDATETIME, @EndDate SMALLDATETIME;/ H* R. A  x& T' Y3 b& |4 J
SELECT @StartDate = '20170930', @EndDate = '20180930';
0 E1 ^! @3 X8 |" e+ F* };WITH d(d) AS
& u7 ]6 D4 e( s8 x( d% f- z8 m1 z(
6 @& t  v. p0 _1 c' S& e( ^# l  SELECT DATEADD(MONTH, n, DATEADD(MONTH, DATEDIFF(MONTH, 0, @StartDate), 0))
9 o' l% M' v5 ?) U6 ~- O  FROM ( SELECT TOP (DATEDIFF(MONTH, @StartDate, @EndDate) + 1) $ m0 p6 u, V3 g) t) D( {. n5 [
    n = ROW_NUMBER() OVER (ORDER BY [object_id]) - 15 @% K+ ~4 E! l  d" U9 r7 ?
    FROM sys.all_objects ORDER BY [object_id] ) AS n
/ h( d: y+ p5 e: d. i)1 q) e2 E+ j0 G0 a
SELECT
/ Z# ?' o: |) M  H, \4 a9 H( u  [Period]    = CONVERT(VARCHAR(4), YEAR(d.d)) + '-' + CONVERT(VARCHAR(2), MONTH(d.d)),8 `& G9 B- X. O- ?9 ^: \  ~
  QtyTotal = ISNULL(SUM(o.QEXIT),0)
  {9 w! d- U+ FFROM d LEFT OUTER JOIN VE_STOCKTRANS AS o9 n. w* d5 T; V* {8 j& n- P$ G
  ON o.TRANSDATE >= d.d
& c, `( K! C9 v  p7 ~+ Y. Q* s  AND o.TRANSDATE 我需要获取过去一年中某项商品的总销售质量。如果该商品在该特定月份没有任何销售,则该月旁边应显示0。除非提供WHERE子句,否则上面的查询将执行所需的操作。一旦添加WHERE子句以获取特定产品的数据,就没有销售的月份消失了。
* x* Z: x7 a: b如果有经验的SQL开发人员可以向我显示正确的方向,我将不胜感激。
1 |( B1 r- R2 S- ]4 n谢谢: S7 ?; T9 [: f" Q( V% o
               
$ I7 @, R" p5 }& `解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则