Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql MS Access-循环引用由别名';说明';出口时_Sql_Ms Access_Circular Reference - Fatal编程技术网

Sql MS Access-循环引用由别名';说明';出口时

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

我有一个运行完全正常的查询。但当我尝试将其导出到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
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。