我想将此查询转换为Access 2007。 每次我尝试运行它时,我在查询表达式中得到一个语法错误缺失运算符。
我感谢任何帮助
SELECT
u.UserID,
u.FirstName,
u.LastName,
u.Username,
u.Email,
u.DisplayName,
upd.TypeOfAccess,
upd.kusfCompanyCode FROM dbo.dnn_Users AS u INNER JOIN
dbo.dnn_UserRoles AS ur ON u.UserID = ur.UserID INNER JOIN
dbo.dnn_Roles AS r ON ur.RoleID = r.RoleID AND (r.RoleName = N'KUSF Agent' OR r.RoleName = N'KUSF Company With Agent' OR r.RoleName = N'KUSF Company Without Agent') LEFT OUTER JOIN
(SELECT
up.UserID,
MAX(CASE WHEN ppd.PropertyName = 'TypeOfAccess' THEN up.PropertyValue ELSE '' END) AS TypeOfAccess,
MAX(CASE WHEN ppd.PropertyName = 'kusf CompanyCode' THEN up.PropertyValue ELSE '' END) AS kusfCompanyCode
FROM
dbo.dnn_UserProfile AS up INNER JOIN
dbo.dnn_ProfilePropertyDefinition AS ppd ON
up.PropertyDefinitionID = ppd.PropertyDefinitionID AND ppd.PortalID = 0
GROUP BY up.UserID) as upd on u.UserID = upd.UserID
答案 0 :(得分:0)
在将TSQL查询转换为Access 2007查询时,请查看此规则集,如帖子中所述。可能会有助于解决您的问题。
Convert Microsoft Access (JET SQL) to SQL Server (T-SQL) Cheatsheet
答案 1 :(得分:0)
我正在看到的一些“问题”:
CASE
。由于您的CASE
语句都是双值的,因此请使用Iif(<condition>, <true_part>, <false_part>)
。ON
字段之间的连接) ,然后是另一个关闭的paren,它在前面的连接的表名之前打开,&amp; c。除非第一个表名称(和第一个JOIN
)包含在parens中,否则(不要被愚弄 - 这确实 实际上强制执行评估顺序。)LEFT JOIN
而不是LEFT OUTER JOIN
,但这可能并不重要。N'string'
运算符。我从未使用它,但实际上不会发誓这是错误的(在上下文中)。这可能无法解决您的问题,但可能会让您朝着正确的方向前进。