有如下要求的一个 sql 语句:select A.*,B.* from Company_Info AS A,Company_Pub_Position AS B where A.Company_ID=B.Company_IDand 当满足以下这个条件时A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )
,则要执行这个条件valid_date =convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120)>=getdate()否则执行以下这个条件cast(A.EndDate as datetime)>=getdate()这样的 sql 语句要如何拼写呢?是不是用 case then else 啊,但是我不会俱体如何拼写
when
A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )
then
valid_date =convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120)>=getdate()
else
cast(A.EndDate as datetime)>=getdate()
end)
select A.*,B.* from Company_Info AS A,Company_Pub_Position AS B
where A.Company_ID=B.Company_ID
and valid_date =convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120)>=getdate()
and (A.StartDate is null or A.DealClerk='hasdel' or A.DealClerk is null ))
union
select A.*,B.* from Company_Info AS A,Company_Pub_Position AS B
where A.Company_ID=B.Company_ID
and cast(A.EndDate as datetime)>=getdate()
and A.StartDate is not null and A.DealClerk<>'hasdel' and A.DealClerk is not null
and ((A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null ) and valid_date =convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120)>=getdate()) or cast(A.EndDate as datetime)>=getdate())
>=getdate()
干什么要加上這個判斷 ? >=getdate()
这句话没有问题!