1. oracle sql报表统计,怎么按订单类别,分组显示订单总数和交易成功订单数。
SELECT
ord.ORDER_TYPE as 订单类型,
COUNT(ord.ORDER_ID) as 订单总数,
orde.succCount as 交易成功订单总数
FROM
ORDER ord
LEFT JOIN
(
SELECT
ORDER_TYPE,
COUNT(ORDER_ID) AS succCount
FROM
ORDER
WHERE
STATUS_ID = 'ORDER_SUCCESS'
GROUP BY
ORDER_TYPE
)
orde
ON
orde.ORDER_TYPE = ord.ORDER_TYPE
GROUP BY
ord.ORDER_TYPE;
还有一种方法是,
SELECT
ORDER_TYPE AS 订单类型,
STATUS_ID AS 订单状态,
COUNT(ORDER_ID) AS 订单数
FROM
ORDER
GROUP BY
ORDER_TYPE,
STATUS_ID;
查出以订单类型的不同状态为分组的订单数,然后在代码中求订单总数
2. java统计报表sql查出来一个字段的不同的统计
你同步更新数据就行了啊,每次打接,总次数+1更新数据库,取数据就根据电话号取
3. 要出报表,怎么用sql循环出12个月的数据来: 1,0,1 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 . . 12,0,0
用group by 时间进行分组数据
4. 关于SQL查询报表,按月份显示出每月各个业务的办理量
select月份,业务名,sum(办理量)as总办理量from业务表A
groupby月份,业务名
5. SQL销售日报表分组排序问题,请高手指导,谢谢。。。
你要怎么分组? 能把需求说的明白点吗?
给你写一个类似的例子 你自己还得动动脑筋 需要的知识我帮你解决了
Select CASE WHEN
GROUPING(FItemNumber)=1
THEN 'Total:' ELSE
FItemNumber END as FItemNumber
,CASE WHEN GROUPING(Fdate)=1 THEN 'State Total:' ELSE Fdate END as Fdate
,Sum(FSaleQty) AS FSaleQty ,Sum(FAmount) AS FAmount ,Sum(FGain) AS FGain
From T_ItemSale
GROUP BY
ROLLUP(Fdate,FItemNumber)
6. 要查询每天早晨七点到前一天早晨7点的数据,生成日报表SQL怎么写啊
这得看你生成的日报表需要从什么地方取什么样的数据,
给你提供个思路,先查询所有的数据,再where选择日期范围,如果涉及汇总数据等,可以考虑用分组子查询去处理
7. 请问用SQL如何编制以下报表
SQL Server 2008及以上的话可以这样:
--测试数据
with表A(仓库,物料代码,物料名称,规格型号,单位,单价,收入数量,收入金额)as(
select'原料仓','01.01','原料1','注塑','PCS',2,100,200unionall
select'原料仓','01.02','原料2','','PCS',3,100,300unionall
select'原料仓','01.03','原料3','喷油','PCS',4,100,400unionall
select'原料仓','01.15','原料6','','PCS',1.2,1000,1200unionall
select'成品仓','02.00001','等级品测试A','','PCS',23.37,2,46.74unionall
select'成品仓','02.00004','等级品测试B','','PCS',46.34,2,92.67unionall
select'成品仓','02.03','成品3','','PCS',16.54,30,496.16unionall
select'成品仓','02.04','成品4','','PCS',2.13,200,426.15unionall
select'成品仓','02.06','替代测试0911','','PCS',0.4,100,40
)
--按仓库分类汇总,并与原始数据一起展示
select仓库,物料代码,物料名称,规格型号,单位,单价,收入数量,收入金额from(
select0asordercode,*from表A
unionall
selectgrouping_id(仓库),isnull(仓库+'(小计)','合计'),null,null,null,null,null,sum(收入数量),sum(收入金额)from表A
groupbycube(仓库)
)t
orderbyordercode,仓库
结果:
8. 如何运用SQL进行双向表头报表查询
可以先将原始数据按照存款的区间和类别进行一次分组:SELECT TYPE, CASE WHEN BAL < 50000 THEN '5万元以下'WHEN BAL BETWEEN 50001 AND 100000 THEN '5-10万'WHEN BAL BETWEEN 100001 AND 200000 THEN '10-20万'WHEN BAL BETWEEN 200001 AND 300000 THEN '20-30万'WHEN BAL BETWEEN 300001 AND 400000 THEN '30-40万'WHEN BAL BETWEEN 400001 AND 500000 THEN '40-50万'WHEN BAL > 500000 THEN '50万以上'END AS BAL_RANGE,BAL, AGE, COUNT(*) COUNT_B FROM C_CUST_AGE WHERE DEPT_ID = ? AND TYPE = ? GROUP BY TYPE, AGE, BAL
9. sql 按照小时分组查询并统计
--模拟销售的表.
CREATETABLE#temp(
[销售时间]datetime,
[销量]int,
[实销]int
)
go
--由于成本与毛利,我估计应该是在另外一个表里面的,这里就不模拟了
INSERTINTO#temp
--9点的
SELECT'2013-07-1609:55:15',9,900UNIONALL
--10点的
SELECT'2013-07-1610:15:15',1,100UNIONALL
SELECT'2013-07-1610:25:15',15,1500UNIONALL
SELECT'2013-07-1610:35:15',10,1000UNIONALL
--11点的
SELECT'2013-07-1611:15:15',1,100UNIONALL
SELECT'2013-07-1611:25:15',2,200UNIONALL
SELECT'2013-07-1611:35:15',3,300UNIONALL
SELECT'2013-07-1611:45:15',4,400UNIONALL
SELECT'2013-07-1611:55:15',5,500UNIONALL
--其他的.
SELECT'2013-07-1612:15:15',12,1200UNIONALL
SELECT'2013-07-1613:15:15',13,1300UNIONALL
SELECT'2013-07-1614:15:15',14,1400UNIONALL
--中间缺少15点与16点的
SELECT'2013-07-1617:15:15',17,1700UNIONALL
SELECT'2013-07-1618:15:15',18,1800;
goSELECT
ISNULL(Convert(varchar(2),sv.number)+'-'+Convert(varchar(2),sv.number+1),'合计')AS[销售时段],
SUM([销量])AS[销量],
SUM([实销])AS[实销],
(SELECTSUM([实销])FROM#tempt2WHEREDATEPART(hh,t2.[销售时间])<=ISNULL(sv.number,23))AS[累计实销]
FROM
master..spt_valuessv
JOIN#tempt
ON(sv.number=DATEPART(hh,t.[销售时间]))
WHERE
sv.type='P'
ANDsv.number>=9
ANDsv.number<20
GROUPBY
sv.numberWITHrollup
GO
销售时段销量实销累计实销
--------------------------------------
9-109900900
10-112626003500
11-121515005000
12-131212006200
13-141313007500
14-151414008900
17-1817170010600
18-1918180012400
合计1241240012400
(9行受影响)
这样行么?
10. SQL报表显示分组小计和合计是怎么实现的
客户提出需求,针对某一列分组加上小计,合计汇总。网上找了一些有关SQL加合计的语句。都不是很理想。决定自己动手写。
思路有三个:
1.很多用GROUPPING和ROLLUP来实现。
优点:实现代码简洁,要求对GROUPPING和ROLLUP很深的理解。
缺点:低版本的Sql Server不支持。
2.游标实现。
优点:思路逻辑简洁。
缺点:复杂和低效。
3.利用临时表。
优点:思路逻辑简洁,执行效率高。SQL实现简单。
缺点:数据量大时耗用内存.
综合三种情况,决定“利用临时表”实现。
实现效果
原始表TB
SQL语句
复制代码 代码如下:
select * into #TB from TB
select * into #TB1 from #TB where 1<>1
select distinct zcxt into #TBype from #TB order by zcxt
select identity(int,1,1) fid,zcxt into #TBype1 from #TBype
DECLARE @i int
DECLARE @k int
select @i=COUNT(*) from #TBype
set @k=0
DECLARE @strfname varchar(50)
WHILE @k < @i
BEGIN
Set @k =@k +1
select @strfname=zcxt from #TBype1 where fid =@k
set IDENTITY_INSERT #TB1 ON
insert into #TB1(fid,qldid,fa_cardid,ztbz,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,zcxt,fa_ljjzzb)
select fid,qldid,fa_cardid,ztbz,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,zcxt,fa_ljjzzb from
(
select * from #TB where zcxt=@strfname
union all
select 0 fid,'' qldid,'' fa_cardid,'' ztbz,'小计' fa_name,'' model,sum(i_number) as i_number,'' gzrq,sum(CAST(zcyz as money)) as zcyz,sum(CAST(ljzj as money)) as ljzj,sum(CAST(jz as money)) as jz,'' sybm,'' zcxt,Sum(fa_ljjzzb) as fa_ljjzzb
from #TB where zcxt=@strfname
group by ztbz
) as B
set IDENTITY_INSERT #TB1 off
END
select qldid,fa_cardid,zcxt,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,ztbz,fa_ljjzzb from #TB1
union all
select '' qldid,'' fa_cardid,'' ztbz,'合计' fa_name,'' model,sum(i_number) as i_number,'' gzrq,sum(CAST(zcyz as money)) as zcyz,sum(CAST(ljzj as money)) as ljzj,sum(CAST(jz as money)) as jz,'' sybm,'' zcxt,Sum(fa_ljjzzb) as fa_ljjzzb
from #TB
drop table #TB1
drop table #TBype1
drop table #TBype
drop table #TB
扩展改进
可以改写成一个通用的添加合计小计的存储过程。