2016-12-16 101 views
0

This查询位于ColdFusion中,并且它可以为旧版本的ColdFusion运行,但无法运行这个查询现在。因为它不是在聚合函数或领域GROUP BY子句列XXXXX'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

 <CFQUERY name="getUserList" datasource="#REQUEST.dsn#" maxrows="1"> 
     SELECT 
      TUser.userID as user_ID, 
      Min(TUser.agencyID) as agencyID, 
      Min(TUser.servicing_EntityID) as servicing_EntityID, 
      Min(Tuser.userid) AS userID, 
      Min(Tuser.lastname) AS lastName, 
      Min(Tuser.firstname) AS firstName, 
      Min(Tuser.isSecondary) AS isSecondary, 
      Min(Tuser.corporate_ID) AS corporate_ID, 
      Min(Tuser.city) AS city, 
      Min(TUser.address1) AS address1, 
      Min(Corporate_Client.client_name) AS client_name, 
      Min(TLocationProvState.abrev) AS abrev, 
      TUser_Loyalty.loyalty_ID AS loyalty_ID 
     FROM TUser 
     LEFT JOIN TLocationProvState ON (Tuser.provinceID = TLocationProvState.PROVSTATEID) 
     LEFT JOIN Corporate_Client ON (Tuser.corporate_ID = Corporate_Client.client_ID) 
     LEFT JOIN TUser_Loyalty ON (Tuser.userid = TUser_Loyalty.userID) 
     LEFT JOIN TLoyalty ON (TUser_Loyalty.loyalty_ID = TLoyalty.loyalty_ID) 
     WHERE (0=1) 
     GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
     ORDER BY TUser.LastName, TUser.FirstName, TUser.User_ID 
     </CFQUERY> 
+0

将您的ORDER BY更改为'ORDER BY LastName,firstName,User_ID',您将注意到您的选择中有Min(LastName)和min(FirstName),这与Min的结果不同。由于表别名按顺序可用,只需使用列别名即可。 – xQbert

+0

试过....它没有工作,仍然是同样的错误。而现在的SQL是GROUP BY TUser.UserID,TUser_Loyalty.loyalty_ID,TUser.LastName,TUser.FirstName \t \t ORDER BY USER_ID,loyalty_ID,姓氏,名字 –

+0

当我有奇怪的行为,我只是不停地打破查询...通过仅使用组中的TUser.userID,Tuser_Loyalty.Loyalty_ID来消除订单,然后执行该操作?如果它运行,那么顺序是问题,我们集中在那里,如果它仍然不运行消除分钟和分组。它是否运行,然后在一分钟内加回来,并通过... – xQbert

回答

0

您正试图ORDER还没有被指定为包含只是让我想起了列“TUser.LastName”在选择列表中无效组字段。这些字段必须返回才能排序,因此,查询执行程序需要知道如何处理分组语句中的所有字段。

GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID, TUser.LastName, TUser.FirstName 
ORDER BY TUser.User_ID, TUser.LastName, TUser.FirstName 

OR

GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
ORDER BY TUser.User_ID, MIN(TUser.LastName), MIN(TUser.FirstName) 
+0

谢谢,我会一一试一下,让你知道结果。谢谢~~~ –

+0

其实,我不认为任何形式的TUser表需要汇总。您已经通过UserID分组。这些字段在用户标识中是统一的,对吗? –

+0

尝试了两个...仍然是相同的错误...我想我应该使用别名按顺序.... –

0

您的订单将是无效的,由你使用的列,而不是分钟名字的

WHERE (0=1) 
    GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
    ORDER BY LastName, FirstName, User_ID 

亦奇... 为了别名Tuser.user_ID,但选择显示TUser.userID(无下划线)

第e SQL具有select之后生成的顺序,因此列别名可用。

+0

是的,我昨天尝试。它说“不明确的列名lastname”或用户名的东西... –

+0

你可以使用不同的别名,如aLastName和aFirstName? – xQbert

+0

只是在工作 –

相关问题