不是用存储过程实现的,不过大体思路是这样的可以吗?declare @tb1 table(商铺编号 varchar(10),商铺面积 varchar(10) , 管理费用 varchar(10)) insert @tb1 select '1111 ','100','100' insert @tb1 select '1112','200','200' insert @tb1 select '1113','300','300' declare @tb2 table(商铺编号 varchar(10),管理费用 varchar(10) , 年月 datetime) insert @tb2 select '1111 ','100','20090301' insert @tb2 select '1112','200','20090301' insert @tb2 select '1113','300','20090301' insert @tb2 select '1111 ','100','20090401'----申明参数------- declare @cs datetime select @cs='2009-04-01 00:00:00.000' select a.* from @tb1 a inner join (select 商铺编号 from (select 商铺编号 from ( select zd=max(年月),商铺编号 from @tb2 group by 商铺编号)c where (month(zd)<month(@cs) and year(zd)=year(@cs)) or year(zd)<year(@cs))d )b on b.商铺编号=a.商铺编号
回楼上 不是说5月份交了,以前都交了,而是每个月都要交 ------------------------------------------------- 根据楼上几位的帮助,我这样写: CREATE PROCEDURE Searchtest ( @spbh char(10), //商铺编号 @date varchar(10) //所属日期) as begin select * from zulin AS A where not exists( select * from shoufei where A.商铺编号=@spbh and 所属日期=@date ) end GO ---------------------- 出来的结果 不对啊
回yubudian 尽量是想用存储过程,谢谢你的回答,给我提供了一个思路~
CREATE PROCEDURE Searchtest ( @spbh char(10), //商铺编号 @date varchar(10) //所属日期 ) as begin select * from zulin AS A where 商铺编号=@spbh and not exists( select * from shoufei where A.商铺编号=商铺编号 and 所属日期=@date ) end GO
SQL2000,有两个表: 商铺表 ( 商铺编号 商铺面积 管理费用 ) 收费表 ( 商铺编号 管理费用 所属日期 现要求能够显示出09年现要求能够显示出09年4月份没缴管理费用的商铺, 如上例,则显示为: 商铺编号 管理费用 商铺面积 select S.商铺编号,S.管理费用,F.所属日期 from 商铺表 S right join 收费表 F on F.商铺编号=S.商铺编号 and F.所属日期=N'09年4月' create proc getInfo ( @Date datetime ) as select select S.商铺编号,S.管理费用,F.所属日期 from 商铺表 S right join 收费表 F on F.商铺编号=S.商铺编号 and F.所属日期=@Date
FROM 商铺表 AS A
WHERE NOT EXISTS(
SELECT 1
FROM 收费表
WHERE A.商铺编号=商铺编号 AND 所属日期='09年4月'
)
@year char(4),
@month char(2)
as
begin
select * from 商铺表
where 商铺编号 not in
(select 商铺编号 from 商铺表 where 所属日期=@year+'年'+@month+'月')
end
不是not exist/in
是 小于 吧
如果5月份交了 那么以前的都交了
具体怎么写忘了
期待楼下
insert @tb1 select '1111 ','100','100'
insert @tb1 select '1112','200','200'
insert @tb1 select '1113','300','300'
declare @tb2 table(商铺编号 varchar(10),管理费用 varchar(10) , 年月 datetime)
insert @tb2 select '1111 ','100','20090301'
insert @tb2 select '1112','200','20090301'
insert @tb2 select '1113','300','20090301'
insert @tb2 select '1111 ','100','20090401'----申明参数-------
declare @cs datetime
select @cs='2009-04-01 00:00:00.000'
select a.*
from @tb1 a
inner join
(select 商铺编号
from (select 商铺编号
from (
select zd=max(年月),商铺编号
from @tb2
group by 商铺编号)c
where (month(zd)<month(@cs) and year(zd)=year(@cs))
or year(zd)<year(@cs))d )b
on b.商铺编号=a.商铺编号
不是说5月份交了,以前都交了,而是每个月都要交
-------------------------------------------------
根据楼上几位的帮助,我这样写:
CREATE PROCEDURE Searchtest
(
@spbh char(10), //商铺编号
@date varchar(10) //所属日期)
as
begin
select * from zulin AS A
where not exists(
select *
from shoufei where A.商铺编号=@spbh and 所属日期=@date
)
end
GO
----------------------
出来的结果 不对啊
尽量是想用存储过程,谢谢你的回答,给我提供了一个思路~
CREATE PROCEDURE Searchtest
(
@spbh char(10), //商铺编号
@date varchar(10) //所属日期 )
as
begin
select * from zulin AS A
where 商铺编号=@spbh
and not exists(
select *
from shoufei where A.商铺编号=商铺编号 and 所属日期=@date
) end
GO
商铺表
(
商铺编号 商铺面积 管理费用
)
收费表
(
商铺编号 管理费用 所属日期
现要求能够显示出09年现要求能够显示出09年4月份没缴管理费用的商铺,
如上例,则显示为:
商铺编号 管理费用 商铺面积
select S.商铺编号,S.管理费用,F.所属日期 from 商铺表 S right join 收费表 F on F.商铺编号=S.商铺编号 and F.所属日期=N'09年4月'
create proc getInfo
(
@Date datetime
)
as
select select S.商铺编号,S.管理费用,F.所属日期 from 商铺表 S right join 收费表 F on F.商铺编号=S.商铺编号 and F.所属日期=@Date