--测试表 create table T_NSRQY( --纳税人区域表 QYDM varchar(16) not null, --区域代码 QYMC varchar(60) not null) --区域名称,与T_DRAWENCASHINFO 中地C_NSRQYDM相同 insert into T_NSRQY select '0201','地税局第一分局' union all select '020101','地税局第一分局A科室' union all select '0301','地税局第二分局' union all select '03','地税局' union all select '02','地税局' union all select '04','地税局4' union all select '0401','其他地税局'CREATE TABLE T_DRAWENCASHINFO( --即开即兑兑奖信息 C_ENCASH INT NOT NULL, --兑奖奖金金额 C_CZYFJDM VARCHAR(15) NOT NULL, --操作员分局代码 兑奖地区 C_NSRQYDM VARCHAR(15) NOT NULL) --纳税人所属区域代码 开票地区) insert into T_DRAWENCASHINFO select 100,'2320200000','0201' union all select 50,'2320200000','0401' union all select 20,'2320200110','02' union all select 50,'2320200000','03' union all select 10,'2320200000','020101'create table COMMON_OPERATERS( --操作员表 id int, name varchar(10), department varchar(10), QYDM varchar(16) not null) insert into COMMON_OPERATERS select 1,'gss','2320200000','02' go--查询处理 select id,name ,给其他区所兑的奖金=sum(case when not(C_NSRQYDM like b.QYDM+'__') then C_ENCASH else 0 end) ,他自己所对地奖金=sum(case when C_NSRQYDM like b.QYDM+'__' then C_ENCASH else 0 end) from T_DRAWENCASHINFO a join COMMON_OPERATERS b on a.C_CZYFJDM=b.department join T_NSRQY c on a.C_NSRQYDM=c.QYDM group by id,name godrop table T_NSRQY,T_DRAWENCASHINFO,COMMON_OPERATERS/*--测试结果id name 给其他区所兑的奖金 他自己所对地奖金 ----------- ---------- ----------- ----------- 1 gss 110 100(所影响的行数为 1 行) --*/
create table T_NSRQY( --纳税人区域表
QYDM varchar(16) not null, --区域代码
QYMC varchar(60) not null) --区域名称,与T_DRAWENCASHINFO 中地C_NSRQYDM相同
insert into T_NSRQY
select '0201','地税局第一分局'
union all select '020101','地税局第一分局A科室'
union all select '0301','地税局第二分局'
union all select '03','地税局'
union all select '02','地税局'
union all select '04','地税局4'
union all select '0401','其他地税局'CREATE TABLE T_DRAWENCASHINFO( --即开即兑兑奖信息
C_ENCASH INT NOT NULL, --兑奖奖金金额
C_CZYFJDM VARCHAR(15) NOT NULL, --操作员分局代码 兑奖地区
C_NSRQYDM VARCHAR(15) NOT NULL) --纳税人所属区域代码 开票地区)
insert into T_DRAWENCASHINFO
select 100,'2320200000','0201'
union all select 50,'2320200000','0401'
union all select 20,'2320200110','02'
union all select 50,'2320200000','03'
union all select 10,'2320200000','020101'create table COMMON_OPERATERS( --操作员表
id int,
name varchar(10),
department varchar(10),
QYDM varchar(16) not null)
insert into COMMON_OPERATERS
select 1,'gss','2320200000','02'
go--查询处理
select id,name
,给其他区所兑的奖金=sum(case when not(C_NSRQYDM like b.QYDM+'__') then C_ENCASH else 0 end)
,他自己所对地奖金=sum(case when C_NSRQYDM like b.QYDM+'__' then C_ENCASH else 0 end)
from T_DRAWENCASHINFO a
join COMMON_OPERATERS b on a.C_CZYFJDM=b.department
join T_NSRQY c on a.C_NSRQYDM=c.QYDM
group by id,name
godrop table T_NSRQY,T_DRAWENCASHINFO,COMMON_OPERATERS/*--测试结果id name 给其他区所兑的奖金 他自己所对地奖金
----------- ---------- ----------- -----------
1 gss 110 100(所影响的行数为 1 行)
--*/
大家可以先不考虑操作员,只考虑地区就行了。
所谓的department 就是地区编号,0101,0102....等等,
把那个2320200000删掉即可,^_^
不好意思,麻烦大家了。
给个思路吧。
......
再次谢谢楼上各位,特别是邹建大哥,小弟在此感谢......