Sql MS Access-循环引用由别名';说明';出口时
我有一个运行完全正常的查询。但当我尝试将其导出到csv时:Sql MS Access-循环引用由别名';说明';出口时,sql,ms-access,circular-reference,Sql,Ms Access,Circular Reference,我有一个运行完全正常的查询。但当我尝试将其导出到csv时: 查询选择的选择列表中别名“Description”导致的循环引用 循环引用在哪里?为什么只有在导出输出时才会发生循环引用 SELECT date, Time, User, Description, acct, first(tbl1) AS KYC FROM (SELECT date, Time, User, First(Description) As Description, Null as acct FROM Tbl2 WHE
查询选择的选择列表中别名“Description”导致的循环引用
循环引用在哪里?为什么只有在导出输出时才会发生循环引用
SELECT date, Time, User, Description, acct, first(tbl1) AS KYC
FROM (SELECT
date,
Time,
User,
First(Description) As Description,
Null as acct
FROM Tbl2
WHERE Tbl2.description not like "%New%" and Tbl2.description not like "%Out%"
GROUP BY date, Time, User, acct
UNION
SELECT date,
Time,
User,
Description,
acct
FROM Tbl2
WHERE
Tbl2.Description like "%New%" or Tbl2.Description like "%Old%"
GROUP BY date,Time,User,Description, acct) AS KYCclean
LEFT JOIN chg_type ON [KYCclean].[description] like [chg_type].[Matchstring]
GROUP BY date, Time, User, Description, acct;
请尝试其他别名:
First(Description) As SomeDescription,
这是一个简单的错误: 在Access中,您不能将
先(Description)作为Description进行操作,因为这会导致循环引用。重命名该字段,它将正常工作:
SELECT date, Time, User, FirstOfDescription, acct, first(tbl1) AS KYC
FROM (SELECT
date,
Time,
User,
First(Description) As FirstOfDescription,
Null as acct
FROM Tbl2
WHERE Tbl2.description not like "%New%" and Tbl2.description not like "%Out%"
GROUP BY date, Time, User, acct
UNION
SELECT date,
Time,
User,
Description,
acct
FROM Tbl2
WHERE
Tbl2.Description like "%New%" or Tbl2.Description like "%Old%"
GROUP BY date,Time,User,Description, acct) AS KYCclean
LEFT JOIN chg_type ON [KYCclean].[FirstOfDescription] like [chg_type].[Matchstring]
GROUP BY date, Time, User, FirstOfDescription, acct;
此错误应在多种情况下发生,而不仅仅是在输出时
请注意,您的问题还有许多其他奇怪之处,例如联接中不带括号的like
,以及使用%
作为通配符。您可以使用列名作为别名,就像您希望的那样。要求是完全限定聚合函数中的列
First(Tbl2.Description) As Description
请注意,First()聚合函数可能会导致不一致的结果,因为它依赖于表顺序——在您的情况下,表顺序不是由源中的特定order by子句确定的
此处的更多内容由于某些原因没有修复,无需重命名,只需完全限定列,列/别名不会混淆。%
是MS SQL server通配符。请小心,因为Access SQL和MS SQL Server SQL非常不同。即使后端在MS SQL Server上,您仍然需要在前端运行的任何查询上使用Access SQL。