我的意思如下:(先把这一完整的 sql 语句贴上)-------------------------------------------------------
SELECT A.*,B.*FROM Company_Info A LEFT OUTER JOIN Company_Pub_Position B
ON A.Company_ID=B.Company_ID WHEREcase
when A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )thencast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate()else cast(A.EndDate as datetime)>=getdate()end------------------------------------------------------------我的意思如下:当满足以下这个条件时:when A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )----------------------------我想这样筛选数据:thencast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate()----------------------------否则:就这样筛选数据else cast(A.EndDate as datetime)>=getdate()
--------------------------------------------------------不知道我 这样拼接 sql 语句是否可以,但是现在这样写了,sql查询分析器提示第 10 行: '>' 附近有语法错误。就是这行:cast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate()而实际上这句话,单拿出来的话, sql 分析器是可以通过的,肯定我上面那个 sql 语句拼接上有错误,请各位老大帮帮忙,不胜感激!!
解决方案 »
- 数据库更新语句和分组查询语句问题!
- sql里有返回当前记录是第几行的函数或是关键字吗?
- 分组查询 获取每一组的第一条记录 SQL怎么写?
- 试图扩大物理文件时,modify file 遇到操作系统错误 112未能调整文件 _log 的空间分配。restore database
- 大家一起来看,这样的一个sql语句怎样写? *先来者得分*
- dbA数据库的表TbA有数据插入或修改时,dbB数据库的表TbB也作相应的插入或修改。请教:这样的触发器怎么写?
- ▲菜鸟提问的查询问题,急啊啊
- 新手,花了一个上午写了一个分页存储过程,但是参数出错,请高手解决,谢谢!
- SQL使用中的一个问题!
- 连接SQL Server数据库的问题(我已经问了n个地方,都没有人答过)
- ASP.net C#中如何调用SQL数据库中的存储过程,与触发器。
- 技术性散分:当 not in 遇到 null
ON A.Company_ID=B.Company_ID
where
( A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null ) and cast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate()) or --这里其实就是case 的作用
( A.StartDate is not null and ( A.DealClerk<>'hasdel' and A.DealClerk is not null ) and cast(A.EndDate as datetime)>=getdate() )--试试
你换过来就可以了 A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )
FROM
Company_Info A LEFT OUTER JOIN Company_Pub_Position B
ON
A.Company_ID=B.Company_ID WHERE(A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )
and
cast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate())
or
(A.StartDate is not null and ( A.DealClerk<>'hasdel' and A.DealClerk is not null )
and cast(A.EndDate as datetime)>=getdate())
xiaohu的貌似可以了~~
xiaoku(野蛮人(^v^)) 明白你的意思了,就是分成两种情况,然后,用 or 链接,最终是可以解决,记录集是正确的,不过,我有点不解,难道用 case when 不能解决吗?谢谢你的指点,多谢了
and
cast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate())
象这两个条件是并列条件,不是存在条件,两条件是并列关系不好用case when貌似
ON A.Company_ID=B.Company_ID WHERE(case
when A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )thencast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime)else cast(A.EndDate as datetime)end)>=getdate()
FROM Company_Info A
LEFT OUTER JOIN Company_Pub_Position B ON A.Company_ID=B.Company_ID
WHERE
A.StartDate is null or ( A.DealClerk='hasdel' or A.DealClerk is null )
AND cast(convert( varchar(10),dateadd( month,B.Pub_Position_ValidDate,B.Pub_Position_Date),120) as datetime) >=getdate()union allSELECT A.*,B.*
FROM Company_Info A
LEFT OUTER JOIN Company_Pub_Position B ON A.Company_ID=B.Company_ID
WHERE
A.StartDate is not null or ( A.DealClerk<>'hasdel' or A.DealClerk is not null )
AND cast(A.EndDate as datetime)>=getdate()