繁体   English   中英

转换非ANSI连接运算符

[英]convert non-ANSI join operators

我刚刚使用兼容模式90将SQL Server数据库从2000升级到2005,现在发现我有一些使用非ANSI联接运算符的查询,SQL Server 2005中不完全支持这些查询。因此,我需要转换以下内容代码转换为ANSI兼容格式。

FROM gaf (nolock),
     gaf_dress as D (nolock index = pkgaf_DRESS_GUM),
     gaf_dress as M (nolock index = pkgaf_DRESS_GUM),
     mobile (nolock index = pkmobileID),
     Quest (nolock index = pkQuestID)

WHERE
gaf.ID = mobile.ID
and gaf.DRESS_GUM_1 *= D.DRESS_GUM
and gaf.DRESS_GUM_2 *= M.DRESS_GUM
and gaf.ID *= Quest.ID
and gaf.RECORD=1
and na2.PURPOSE <> 'Doore'
and gaf.PD_THRU > dateadd(dd, -1, dateadd(mm, -13, convert(datetime, convert(varchar(6), 
getdate(), 112) + '01')))

任何帮助将不胜感激。

我以前尝试过

FROM Name (nolock)inner join mobile
on Name.ID = Demographics.ID left outer join NA1
on Name.ADDRESS_NUM_1 = NA1.ADDRESS_NUM left outer join NA2
on Name.ADDRESS_NUM_2 = NA2.ADDRESS_NUM left outer join ACSW
on Name.ID = ACSW.ID 
;with Name_Address (nolock,(index(pkName_AddressADDRESS_NUM)))as NA1
;with Name_Address (nolock, (index(pkName_AddressADDRESS_NUM))as NA2 ;with mobile(nolock, 
(index (pkmobileID))
;with ACSW (nolock, (index (pkACSWID)))
WHERE gaf.MEMBER_RECORD=1
and na2.PURPOSE <> 'MAIN'
and gaf.PAID_THRU > dateadd(dd, -1, dateadd(mm, -13, convert(datetime, 
convert(varchar(6),  getdate(), 112) + '01'))) 

但这引发了我这个错误“消息102,级别15,状态1,行302'('附近的语法不正确。”

FROM gaf
 INNER JOIN mobile ON gaf.ID = mobile.ID
 LEFT JOIN gaf_dress as D ON and gaf.DRESS_GUM_1 = D.DRESS_GUM 
 LEFT JOIN gaf_dress as M ON gaf.DRESS_GUM_2 = M.DRESS_GUM AND M.PURPOSE <> 'Doore'
 LEFT JOIN Quest ON gaf.ID = Quest.ID

WHERE gaf.RECORD=1
  AND gaf.PD_THRU > dateadd(dd, -1, dateadd(mm, -13, convert(datetime, convert(varchar(6), 
getdate(), 112) + '01')))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM