国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自治县| 堆龙德庆县| 彝良县| 鸡东县| 洛扎县| 渝北区| 通州区| 环江| 德令哈市| 仁寿县| 商丘市| 房产| 天镇县| 万盛区| 桃江县| 安乡县| 新龙县| 长垣县| 通州市| 霞浦县| 阿勒泰市| 玉溪市| 满洲里市| 扬州市| 四子王旗| 兴山县| 扎囊县| 城步| 长治市| 泊头市| 平塘县| 平果县| 新龙县| 松溪县| 同心县| 涞水县| 南昌市| 三门县| 漳平市| 禹州市| 长治县|