1. 程式人生 > >按月統計訂單數量報表SQL語句(CASE 和DECODE的使用)

按月統計訂單數量報表SQL語句(CASE 和DECODE的使用)

本文主要是使用CASE 和DECODE實現按月統計訂單數量,通過此示例希望能幫助讀者理解CASE和DECODE在ORCALE中的使用。

1.使用CASE實現:

按 Ctrl+C 複製程式碼 按 Ctrl+C 複製程式碼

這是一條按月統計每個OPERATING_WAREHOUSE_CODE訂單數量的SQL語句,統計2012年一到三月份每個OPERATING_WAREHOUSE_CODE的訂單數量。

本文主要介紹下CASE WHEN  THEN   ELSE   END AS的使用。

文中:

CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '01' THEN
'1' ELSE '0' END AS M1

這段SQL主要是把表OMS_ORDER_HEAD中訂單建立時間為一月份的標記為”1”,並且這段程式碼增加了一列M1,同樣M2和M3分別對應二月份和三月份,根據訂單建立的時間其對應的月份M1,M2,M3列的值會被標記為1。

複製程式碼
SELECT OPERATING_WAREHOUSE_CODE,
CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '01' THEN '1' ELSE '0' END AS M1,
CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '02' THEN
'1' ELSE '0' END AS M2, CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '03' THEN '1' ELSE '0' END AS M3 FROM OMS_ORDER_HEAD M WHERE M.ORDER_CREATION_DTE > TO_DATE('2012-1-1','YYYY-MM-DD') AND M.ORDER_CREATION_DTE < TO_DATE('2012-4-1','YYYY-MM-DD')
複製程式碼

其中這段SQL執行的結果如圖:

然後在此基礎上再對M1(一月),M2(二月),M3(三月)對應的訂單數量用SUM進行統計。

整條SQL語句的執行結果入下圖:

 整條SQL語句用CASE WHEN  THEN   ELSE   END AS結合SUM很好的統計出2012年前三個月每個OPERATING_WAREHOUSE_CODE的訂單數量。

2.使用DECODE實現

 當然我們同樣可以通過使用ORACLE中的DECODE來實現同樣的功能,DECODE的實現程式碼:

複製程式碼
select OPERATING_WAREHOUSE_CODE,SUM(DECODE(TO_CHAR(OH.Order_Creation_Dte,'mm'),01,1,0)) as M1,
SUM(DECODE(TO_CHAR(OH.ORDER_CREATION_DTE,'mm'),02,1,0)) AS M2,
SUM(DECODE(TO_CHAR(OH.ORDER_CREATION_DTE,'mm'),03,1,0)) AS M3
from OMS_ORDER_HEAD OH
WHERE OH.ORDER_CREATION_DTE>TO_DATE('2012-1-1','YYYY-MM-DD') 
AND OH.ORDER_CREATION_DTE < TO_DATE('2012-4-1','YYYY-MM-DD')
GROUP BY OPERATING_WAREHOUSE_CODE
ORDER BY OPERATING_WAREHOUSE_CODE
複製程式碼 以上SQL可以達到上述CASE同樣的效果。 在邏輯程式設計中,經常用到If – Then –Else 進行邏輯判斷。在DECODE的語法中,實際上就是這樣的邏輯處理過程。它的語法如下: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) 不管是用CASE還是DECODE都可以達到同樣的效果,在理解的基礎上我們可以靈活使用DECODE和CASE的用法。

相關推薦

統計訂單數量報表SQL語句CASE DECODE的使用

本文主要是使用CASE 和DECODE實現按月統計訂單數量,通過此示例希望能幫助讀者理解CASE和DECODE在ORCALE中的使用。 1.使用CASE實現: 按 Ctrl+C 複製程式碼 按 Ctrl+C 複製程式碼 這是一條按月統計每個OPERATING_WAREHOUSE_CODE訂單數量的SQL

sql語句Oraclemysql的注意事項

我們在平時寫sql語句的時候很容易忽視一些細節問題,而且在Oracle和mysql中sql語句也是有很多的不同之處,這些我們都需要注意,下面我就把平時比較容易忽視的幾個點列出來。 一:分頁 mysql 分頁:select * form 表名 limit m,n; Oracel中分頁:

ThinkPHP統計訂單總金額

execute 使用 des 影響 月份 height ges cnblogs one 基於ThinkPHP,按“月份”統計訂單表中的總金額 數據表:(time:為年月日時分秒的時間戳) 實現樣式: 核心代碼: $list = $m->where($w

SQL語句二十一—— 觸發器DML觸發器

cti lock dml set sql語句 事件 check約束 服務 expand 觸發器 一 、觸發器概述(特殊的存儲過程) 定義: 在修改指定表值的數據時執行的 存儲過程. 不同的是 : 執行存儲過程要使用EXEC語句來調用,而觸發器的執行不需要使用EX

My SQL Case_3: 根據旅遊局資料練習My SQL語句前6題

練習1. 從dw_complain_total這個表中列出201509的投訴總量及男女分別投訴多少? # 練習1. 從dw_complain_total這個表中列出201509的投訴總量及男女分別投訴多少? # 注意:as用法,時間函式用法, 還有求的是總量 select sum(

【NCRE】---拼接SQL語句Case....When語句

#region 將答案和分數更新到資料庫中 李少然 2015年12月26日10:09:07 /// <summary> /// 將答案和分數更新到資料庫中 /// </summary> /// <param na

四種簡單的SQL語句增刪改查

插入語句: insert into [table] ([column],[column],[column]) values(?,?,?) 刪除語句 delete from [table] where column = ? 修改語句 update [table] s

SQL中的條件判斷語句case when zhen用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case

ORA-00900: 無效 SQL 語句錯誤原因之一

剛試了下joffice的安裝,SQL報錯: ORA-00900: 無效 SQL 語句 SQL語句如下,查了半天,發現錯誤原因是由於換行引起的,標記下! CREATE TABLE OUT_MAIL  (    MAILID               NUMBER(18)  

sql統計數量累加統計數量

字段 microsoft .org clas sel str div select style 1、簡單的,按月統計數量 SELECT CREATE_DATE, DATE_FORMAT(CREATE_DATE, ‘%Y-%m‘) AS month , COU

統計sql語句

有三個表,分別如下: T_BM(部門表) bm_id(部門ID) bm_name(部門名稱) A001 衣物 A002 數碼產品 T_YG(員工表) yg_id(員工ID) bm_id(部門ID) yg_name(員工姓名) yg_phone(員工電話) B001 A

sql 統計查詢統計

evel ring level group 轉化 nec 如果 select left join --String 類型 轉化為 年月日 yyyy-mm-dd to_date(substr(t.submit_time,1,10))) 如果統計一年 需要用 l

sql-統計

Table:'createDate','pigCount'; SQL: select a.mm,b.pigCount from(select 01 mm union all select 02 union all select 03 union all select 04

SQL 統計兩種方式

(1)Convert 函式 select Convert ( VARCHAR(7),ComeDate,120) as Date ,Count(In_code) as 單數,Sum(SumTrueNum) as 件數  from T_In_Top  where  ComeDa

mysql-天或者統計資料

MySQL DATE_FORMAT() 函式 DATE_FORMAT() 函式用於以不同的格式顯示日期/時間資料。 用法: DATE_FORMAT(date,format) 例如

MySQL中如何統計資料

表finance有倆個欄位如下 date date money double(15,2) 下面需要對錶 finance的2010年財務資料,按月進行統計 Sql程式碼 select DATE_FORMAT(date,'%Y-%m') as month,sum(money)

資料統計分析時常用sql語句 (split , row_number , group by, max 等 )

統計分析及建表過程中通常會遇到這樣的需求,比如: 1. 統計以逗號分隔的標籤數,哪個最受歡迎,以及作為內容推薦的資料來源 2. 分組排序url的pv, 取topN的列表 3. 經常會有名字重複的url記錄,取pv最大的那條, 剩下的剔除 下面逐一對以上場景進行總結, 用的是 hivesql,希望

SQL獲取上個月1號,本月1號,下個1號,本月天數 [sql語句]

上個月1號 select CONVERT(varchar(7), dateadd(mm,-1,getdate()) , 120) + '-1' 本月1號 select CONVERT(varchar(7), getdate() , 120) + '-1' 下個月1

Oracle天、統計資料

-----按天統計 select to_char(t.hiredate, 'yyyy/mm/dd') 日期, count(1) 數量 from EMP t where t.hiredate >= to_date('1980/1/1', 'yyyy/mm/dd')

統計上報情況

按照部門、過去12個月做統計,區分已上報數,本月無資料,已傳送提醒;  當月無資料留0 自己寫的最囉嗦最長最沒效率的SQL... SELECT cc.com_id AS com_id, v.`month` AS `month`, cc.com_name AS com_na