国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SqlServer mssql 按月統計所有部門

2024-07-21 02:48:36
字體:
來源:轉載
供稿:網友
SqlServer mssql 按月統計所有部門

以訂單統計為例,前端展示柱狀圖(Jquery統計):

表及主要字段描述如下;表名:Orders1.日期CreateTime2.金額Amount3.用戶UserID

情況一:根據部門統計某一年每月銷量(查詢一個部門月統計)

1)直接在SQL語句中判斷每月信息,好處,前臺直接調用;壞處,性能不高。

SQL語句:

SELECT SUM(CASE WHEN MONTH(s.CreateTime) = 1 THEN s.Amount ELSE 0 END) AS '一月',SUM(CASE WHEN MONTH(s.CreateTime) = 2 THEN s.Amount ELSE 0 END) AS '二月',SUM(CASE WHEN MONTH(s.CreateTime) = 3 THEN s.Amount ELSE 0 END) AS '三月',SUM(CASE WHEN MONTH(s.CreateTime) = 4 THEN s.Amount ELSE 0 END) AS '四月',SUM(CASE WHEN MONTH(s.CreateTime) = 5 THEN s.Amount ELSE 0 END) AS '五月',SUM(CASE WHEN MONTH(s.CreateTime) = 6 THEN s.Amount ELSE 0 END) AS '六月',SUM(CASE WHEN MONTH(s.CreateTime) = 7 THEN s.Amount ELSE 0 END) AS '七月',SUM(CASE WHEN MONTH(s.CreateTime) = 8 THEN s.Amount ELSE 0 END) AS '八月',SUM(CASE WHEN MONTH(s.CreateTime) = 9 THEN s.Amount ELSE 0 END) AS '九月',SUM(CASE WHEN MONTH(s.CreateTime) = 10 THEN s.Amount ELSE 0 END) AS '十月',SUM(CASE WHEN MONTH(s.CreateTime) = 11 THEN s.Amount ELSE 0 END) AS '十一月',SUM(CASE WHEN MONTH(s.CreateTime) = 12 THEN s.Amount ELSE 0 END) AS '十二月'FROM Orders AS sWHERE YEAR(s.CreateTime) = 2014
--其他條件

結果:

一月    二月    三月    四月    五月    六月    七月    八月    九月    十月    十一月    十二月0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    741327.00    120505.00    0.00

2)統計出數據庫里有值的月份,再前端邏輯判斷其他月份補0

SQL語句:

SELECTUserID,MONTH ( CreateTime ) as 月份,SUM( Amount ) as 統計FROMOrdersWHEREYEAR ( CreateTime ) = 2014 -- 這里假設你要查 2014年的每月的統計。--其他條件GROUP BYUserID, MONTH ( CreateTime )結果:月份    銷售額10    741327.0011    120505.00

情況二:統計所有部門某一年每月銷量

1)此數據量大的話影響性能,SQL語句(這里未聯查部門表):

SELECT UserID,SUM(CASE WHEN MONTH(s.CreateTime) = 1 THEN s.Amount ELSE 0 END) AS '一月',SUM(CASE WHEN MONTH(s.CreateTime) = 2 THEN s.Amount ELSE 0 END) AS '二月',SUM(CASE WHEN MONTH(s.CreateTime) = 3 THEN s.Amount ELSE 0 END) AS '三月',SUM(CASE WHEN MONTH(s.CreateTime) = 4 THEN s.Amount ELSE 0 END) AS '四月',SUM(CASE WHEN MONTH(s.CreateTime) = 5 THEN s.Amount ELSE 0 END) AS '五月',SUM(CASE WHEN MONTH(s.CreateTime) = 6 THEN s.Amount ELSE 0 END) AS '六月',SUM(CASE WHEN MONTH(s.CreateTime) = 7 THEN s.Amount ELSE 0 END) AS '七月',SUM(CASE WHEN MONTH(s.CreateTime) = 8 THEN s.Amount ELSE 0 END) AS '八月',SUM(CASE WHEN MONTH(s.CreateTime) = 9 THEN s.Amount ELSE 0 END) AS '九月',SUM(CASE WHEN MONTH(s.CreateTime) = 10 THEN s.Amount ELSE 0 END) AS '十月',SUM(CASE WHEN MONTH(s.CreateTime) = 11 THEN s.Amount ELSE 0 END) AS '十一月',SUM(CASE WHEN MONTH(s.CreateTime) = 12 THEN s.Amount ELSE 0 END) AS '十二月'FROM Orders AS sWHERE YEAR(s.CreateTime) = 2014 group by UserID

結果:

UserID    一月    二月    三月    四月    五月    六月    七月    八月    九月    十月    十一月    十二月1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    53495.00    0.002    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    738862.00    37968.00    0.003    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    2099.00    22849.00    0.004    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    366.00    0.00    0.005    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    6193.00    0.00

2)百度看到有人提到列轉行,未看到實例,不太清楚具體實現方式。有知道的朋友,請告知,謝謝!

SELECTUserID,MONTH ( CreateTime ) as 月份,SUM( Amount ) as 統計FROMOrdersWHEREYEAR ( CreateTime ) = 2014 -- 這里假設你要查 2014年的每月的統計。GROUP BYUserID,MONTH ( CreateTime )結果:UserID    月份    統計1    10    738862.002    10    2099.003    10    366.004    11    53495.001    11    37968.002    11    22849.00

5 11 6193.00


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰察布市| 株洲市| 陵水| 太仓市| 共和县| 金乡县| 平乐县| 调兵山市| 南江县| 井陉县| 汉川市| 全椒县| 监利县| 安陆市| 长丰县| 扎鲁特旗| 德惠市| 年辖:市辖区| 布尔津县| 石首市| 明星| 广东省| 长治市| 会昌县| 洪雅县| 宝鸡市| 金塔县| 宾阳县| 肇庆市| 台中市| 连州市| 塔河县| 郸城县| 田东县| 辰溪县| 舟山市| 犍为县| 江安县| 四会市| 驻马店市| 新津县|