這是一個網購系統。現在需要展現一個用戶的資訊。其中,需要展現用戶的訂單中,待付款、待確認的訂單的數量。
用戶表沒有記錄待付款、待確認的數量,訂單表中有記錄訂單ID、用戶ID、狀態等欄位。
問題:如何只通過一條查詢陳述句,把用戶的資訊(包含代付款訂單數、待付款訂單數)查詢出來?
SELECT STATUS, COUNT(*)
FROM tb_order
WHERE userid = '02000001'
GROUP BY STATUS
uj5u.com熱心網友回復:
select sum(decode(STATUS,'待付款',1,0)) 待付款,sum(decode(STATUS,'待確認',1,0)) 待確認
from tb_order
WHERE userid = '02000001'
uj5u.com熱心網友回復:
CREATE TABLE TB_ORDER (ORDER_ID NUMBER,CUSTOMER_ID NUMBER(5),STATUS VARCHAR2(30)) ;INSERT INTO TB_ORDER VALUES(1,10001,'待付款') ;
INSERT INTO TB_ORDER VALUES(2,10001,'待確認') ;
INSERT INTO TB_ORDER VALUES(3,10001,'已付款') ;
INSERT INTO TB_ORDER VALUES(4,10002,'代付款') ;
INSERT INTO TB_ORDER VALUES(5,10002,'待付款') ;
INSERT INTO TB_ORDER VALUES(6,10003,'已付款') ;
SELECT CUSTOMER_ID,STATUS,COUNT(ORDER_ID)
FROM TB_ORDER
GROUP BY CUSTOMER_ID,STATUS
;
uj5u.com熱心網友回復:
誤解了樓主的意思,重新看了下標題才知道的是行轉列問題。附陳述句:
SELECT * FROM(
SELECT CUSTOMER_ID,STATUS,COUNT(ORDER_ID) cnt
FROM TB_ORDER
GROUP BY CUSTOMER_ID,STATUS
)
PIVOT(MAX(CNT) FOR STATUS IN('待付款','待確認','已付款'))
ORDER BY CUSTOMER_ID
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107701.html
標籤:開發
上一篇:求教大神
下一篇:什么是C .NET
