这是一个网购系统。现在需要展现一个用户的信息。其中,需要展现用户的订单中,待付款、待确认的订单的数量。
用户表没有记录待付款、待确认的数量,订单表中有记录订单ID、用户ID、状态等字段。
问题:如何只通过一条查询语句,把用户的信息(包含代付款订单数、待付款订单数)查询出来?
SELECT STATUS, COUNT(*)
FROM tb_order
WHERE userid = '02000001'
GROUP BY STATUS
用户表没有记录待付款、待确认的数量,订单表中有记录订单ID、用户ID、状态等字段。
问题:如何只通过一条查询语句,把用户的信息(包含代付款订单数、待付款订单数)查询出来?
SELECT STATUS, COUNT(*)
FROM tb_order
WHERE userid = '02000001'
GROUP BY STATUS
解决方案 »
- 请问oracle的补丁在那里下载?官网上好像都下不了
- java连接oracle 10g express问题Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153092352)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)
- round() 函数的问题 (急。。。。。)
- pl/sql连接oracel,执行sql语句速度,都很慢!求助!
- 菜鸟请教pl/sql问题
- bdump没有"分布式 死锁信息"
- 新手提问:“to_char(key_date,'yyyymmdd') as dt_yyyymmdd”后面的as dt_yyyymmdd是什么意思呢?
- 向表插入记录时如果插入记录的前三个字段和表中某个记录的前三个字段相同则更新否则插入,如何实现比较简洁.
- 数据链的问题
- varchar2类型最长能存储多大?如果超过最大值该怎么办呢?
- oracle 奇葩表 奇葩需求 求解答
- DataFactory 创建Oracle数据库报NO access library for'or84d.dll'
sum(decode(STATUS,'待确认',1,0)) 待确认
from tb_order
WHERE userid = '02000001'
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
;
附语句:
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
;