9 回答
TA贡献1872条经验 获得超3个赞
NID NUMBER Y 工号ID
NNAME VARCHAR2(20) Y 员工姓名
NPART NUMBER Y 所属部门
ADDRESS VARCHAR2(20) Y 地址
NMOENY sNUMBER Y 金额
Select NID,NName,sum(NMoeny) from ABC Where NPart=部门 Group by Address,NID,NName
TA贡献1851条经验 获得超3个赞
可以根据查询条件动态生成sql语句,不过这样就没有办法利用sql缓存,如果数据量比较大就会很慢。
建议:
根据不同的查询条件,比如按部门统计,按员工统计,按地区统计等等情况,分别创建相应的存储过程,然后在程序中判断用户选择的查询条件,确定调用哪个存储过程来执行查询。
TA贡献1835条经验 获得超7个赞
下面是按只有两个地区的sql ,如果超出两个地区,我想只能在存储过程里写了
select gonghao,max(xingming) xingming ,max(cnum) cnum,max(sjine) sjine,min(cnum) mnum,min(sjine) mjine from
(SELECT diqu, gonghao,max(xingming) as xingming,count(gonghao) as cnum,sum(jine) as sjine
FROM [SCTest].[dbo].[test1]
where bumen = 1
group by gonghao,diqu) as tab1
group by gonghao
表:
1 1 name1 dress1 5
1 1 name1 dress1 2
1 1 name1 dress2 6
2 2 name2 dress1 6
2 2 name2 dress2 2
2 2 name2 dress2 3
1 3 name3 dress1 9
1 3 name3 dress2 10
结果:
1 name1 2 7 1 6
3 name3 1 10 1 9
- 9 回答
- 0 关注
- 539 浏览
添加回答
举报