--找出现金收入对应的凭证
select a.*
into #现金收入对应凭证
from
(select * from 基础表_财务类_记账凭证表) as a
inner join
(
select distinct 单位代码,会计年度,会计电子账簿编号,会计科目编号
from 基础表_财务类_会计科目表
where 会计科目编号 LIKE '101%'
and [是否最底级科目]='1'
) as b
ON A.单位代码=b.单位代码
AND A.会计年度=b.会计年度
and a.会计电子账簿编号=b.会计电子账簿编号
and a.会计科目编号=b.会计科目编号
where A.借方发生额-A.贷方发生额>@限额
--剔除现金收入对应凭证中
--贷方存在银行存款类科目和摘要中含“调产”或“购房款”
select distinct
e.单位代码,e.会计年度,e.会计电子账簿编号,e.会计月份,e.源凭证号,
e.记账凭证编号,e.会计科目编号,e.借方发生额,e.贷方发生额,e.记账凭证摘要,e.记账凭证日期
into #借现金贷非银行存款凭证
from (
select c.[会计电子账簿编号],c.[会计月份],c.[记账凭证编号]
,c.[会计科目编号],c.[借方发生额],c.[贷方发生额],c.记账凭证摘要
,c.记账凭证日期,c.会计年度,c.单位代码,c.源凭证号
from 基础表_财务类_记账凭证表 as c
inner join #现金收入对应凭证 as d
on c.会计电子账簿编号=d.会计电子账簿编号
and c.会计科目编号=d.会计科目编号
and c.会计年度=d.会计年度
and c.单位代码=d.单位代码
) as e
where 源凭证号 not in
(
select distinct 源凭证号
from 基础表_财务类_记账凭证表 as a
inner join
( select 会计电子账簿编号,会计科目编号
from 基础表_财务类_会计科目表
where (会计科目名称 like '%银行存款%' or 会计科目名称 like '%财政存款%')
and 会计科目级次=1
) as c
on a.会计科目编号=c.会计科目编号
and a.会计电子账簿编号=c.会计电子账簿编号
where A.借方发生额-A.贷方发生额>@限额
)
select
d.[会计年度] as [年度],c.[单位名称],d.[电子账簿简称]
,a.记账凭证摘要,a.[记账凭证日期],a.[记账凭证编号]
,a.[借方发生额]-a.[贷方发生额] as 现金收入金额
,a.[会计电子账簿编号],c.排序号
from #借现金贷非银行存款凭证 as a
inner join 基础表_财务类_电子账簿信息表 as d
on a.会计电子账簿编号=d.会计电子账簿编号
and a.会计年度=d.会计年度
and (d.会计年度 in (@年度+''))
inner join 基础表_资料类_单位信息表 as c
on a.会计年度=c.年份
and a.单位代码=c.单位代码
and (c.单位代码 IN (@单位名称+'') or '999999999999' in (@单位名称+''))
反正参数给定以后我无法查询到所需用的数据,是代码写错了,还是怎么了?
解决方案 »
- sql2005 邮编转换区域问题请教....
- 关于数据库(sqlserver 2000)公式的问题
- 能否用模糊查糊(LIKE)做两个表的连接?
- being21 (民谣)进来解释一下!------楼主放分,我们同样是接分,为何单给playwarcraft(三角褲叉叉的頂點)50分!汗!!
- 一句Sql能否解决这个问题
- 身份证号码是否有非15或非18位的?
- 当数据库MDF文件已经损坏,但LDF文件是完好的情况下,是否可以恢复数据(已经有一个完整备份)
- identity列如何清0
- 请问如何知道用什么帐号在什么时间修改了数据库SA密码?
- 分段查询的实现途径
- 关于order by的处理
- mssql 支持动态列名吗?
建议楼主在两个临时表建立后先检查一下临时表中的数据是否对头,然后再判断最后一句是否能出数据:
--找出现金收入对应的凭证
select a.*
into #现金收入对应凭证
from
(select * from 基础表_财务类_记账凭证表) as a
inner join
(
select distinct 单位代码,会计年度,会计电子账簿编号,会计科目编号
from 基础表_财务类_会计科目表
where 会计科目编号 LIKE '101%'
and [是否最底级科目]='1'
) as b
ON A.单位代码=b.单位代码
AND A.会计年度=b.会计年度
and a.会计电子账簿编号=b.会计电子账簿编号
and a.会计科目编号=b.会计科目编号
where A.借方发生额-A.贷方发生额>@限额select * from #现金收入对应凭证--剔除现金收入对应凭证中
--贷方存在银行存款类科目和摘要中含“调产”或“购房款”
select distinct
e.单位代码,e.会计年度,e.会计电子账簿编号,e.会计月份,e.源凭证号,
e.记账凭证编号,e.会计科目编号,e.借方发生额,e.贷方发生额,e.记账凭证摘要,e.记账凭证日期
into #借现金贷非银行存款凭证
from (
select c.[会计电子账簿编号],c.[会计月份],c.[记账凭证编号]
,c.[会计科目编号],c.[借方发生额],c.[贷方发生额],c.记账凭证摘要
,c.记账凭证日期,c.会计年度,c.单位代码,c.源凭证号
from 基础表_财务类_记账凭证表 as c
inner join #现金收入对应凭证 as d
on c.会计电子账簿编号=d.会计电子账簿编号
and c.会计科目编号=d.会计科目编号
and c.会计年度=d.会计年度
and c.单位代码=d.单位代码
) as e
where 源凭证号 not in
(
select distinct 源凭证号
from 基础表_财务类_记账凭证表 as a
inner join
( select 会计电子账簿编号,会计科目编号
from 基础表_财务类_会计科目表
where (会计科目名称 like '%银行存款%' or 会计科目名称 like '%财政存款%')
and 会计科目级次=1
) as c
on a.会计科目编号=c.会计科目编号
and a.会计电子账簿编号=c.会计电子账簿编号
where A.借方发生额-A.贷方发生额>@限额
)
select * from #借现金贷非银行存款凭证
select
d.[会计年度] as [年度],c.[单位名称],d.[电子账簿简称]
,a.记账凭证摘要,a.[记账凭证日期],a.[记账凭证编号]
,a.[借方发生额]-a.[贷方发生额] as 现金收入金额
,a.[会计电子账簿编号],c.排序号
from #借现金贷非银行存款凭证 as a
inner join 基础表_财务类_电子账簿信息表 as d
on a.会计电子账簿编号=d.会计电子账簿编号
and a.会计年度=d.会计年度
and (d.会计年度 in (@年度+''))
inner join 基础表_资料类_单位信息表 as c
on a.会计年度=c.年份
and a.单位代码=c.单位代码
and (c.单位代码 IN (@单位名称+'') or '999999999999' in (@单位名称+''))
分步查看数据是不是你要的。不一定要一起执行完。
有变量的情况,查看一下变量是否为null
检查过得,两张临时表中都有相应的数据,但是在最后展现的时候就没有了,
难道是关联写错了?放到sql里就是最后代码的临时表无效,虽然提示是无法绑定由多个部分组成的标示符,但是还是可以执行
可以这样处理:
','+@单位代码+',' like '%,'+c.单位代码+',%'
参考:
create table tb(col varchar(20))
insert into tb select 'aaa' union all select 'bbb' union all select 'ccc'
declare @col varchar(100)
set @col='aaa,bbb'
select * from tb where ','+@col+',' like '%,'+col+',%'
/*
col
--------------------
aaa
bbb(2 行受影响)*/
go
drop table tb
create table tb(col varchar(20))
insert into tb select 'aaa' union all select 'bbb' union all select 'ccc' union all select 'aaaaa'
declare @col varchar(100)
set @col='aaa,bbb'
select * from tb where ','+@col+',' like '%,'+col+',%'
/*
col
--------------------
aaa
bbb(2 行受影响)*/
go
drop table tb