34,590
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [dbo].leaseview(
leaseid [nvarchar](20) ,
stallitems [nvarchar](50) ,
closedate datetime
)
CREATE TABLE [dbo].[Stall](
[StallID] [nvarchar](20),
[BlockID] [nvarchar](8),
[Acreage] [decimal](18, 2)
)
CREATE TABLE [dbo].[Block](
[BlockID] [nvarchar](10),
[BlockName] [nvarchar](30)
)
go
CREATE Function [dbo].[GetStallOfBlockID](@StallID Nvarchar(20))
Returns Nvarchar(20)
As
Begin
Declare @temp Nvarchar(20)
Set @temp=''
Select @temp=BlockID from Stall Where Stall.StallID=@StallID
Return @temp
End
go
insert into leaseview
select '2007095F1','5F0083,5F0084','2008-12-31' union all
select '2007095F2','1F0086,2F0088,5F0089', '2008-12-31' union all
select '2007095F3','3F0082', '2008-12-31' union all
select '2007095F4','4F0090,5F0011', '2008-12-31'
insert into block
select '1F','1楼' union all
select '2F','2楼' union all
select '3F','3楼' union all
select '4F','4楼' union all
select '5F','5楼'
go
SELECT * FROM leaseview where leaseid in(
select leaseid from block a,leaseview b where charindex(a.blockid,b.stallitems)>0 and a.blockname in('1楼','3楼')
)
go
drop table leaseview,block,stall
drop function dbo.GetStallOfBlockID
/*
leaseid stallitems closedate
-------------------- -------------------------------------------------- -----------------------
2007095F2 1F0086,2F0088,5F0089 2008-12-31 00:00:00.000
2007095F3 3F0082 2008-12-31 00:00:00.000
(2 行受影响)*/
select * from leaseview where stallitems in
(select stallid from stall where blockid in
(select blockid from block where blockname in('1楼','3楼')))