选择特定列以及其余列,但具有特定顺序和分组依据

时间:2011-12-14 02:15:45

标签: sql select group-by

我需要你的帮助。

这里有一些表格:

  1. 位置表:ID,代码,LocationName
  2. 房间表:ID,IDLocation,RoomNo
  3. 作业表:ID,IDLocation,RoomNo,AssignDate,AssignMonth,AssignYear,ItemA,ItemB,ItemC,....(项目列将始终增加/项目列数不确定)
  4. 我想要一个带有这个顺序序列的select语句:

    Assignment.ID,Location.LocationName,Assignment.AssignDate,Room.RoomNo以及按Assignment.IDLocation 分组的其余项目列

    我之前提出了这个问题:

    SELECT Assignment.ID, Location.LocationName, Assignment.AssignDate, Room.RoomNo, *
    FROM Location, Room, Assignment 
    WHERE Assignment.IDLocation=Location.ID 
        AND Assignment.HouseNo=Room.ID 
    Group By Assignment.IDLocation
    

    但是我得到了这个警告:“ 无法对使用'*' 选择的字段进行分组”

2 个答案:

答案 0 :(得分:0)

您必须在查询中指定要分组的列,而不要使用“*”来选择其他列。

SELECT Assignment.ID, Location.LocationName, Assignment.AssignDate, Room.RoomNo,coulmn1,etch..
FROM Location, Room, Assignment 
WHERE Assignment.IDLocation=Location.ID 
    AND Assignment.HouseNo=Room.ID 
Group By Assignment.IDLocation,Assignment.AssignDate, Room.RoomNo,Column1

此致

答案 1 :(得分:0)

根据您的描述,我猜您只有两个选择:

  • 如果SQL是即时生成的,则必须遍历用于SELECT的字段,并将它们放在一个也用于GROUP BY的变量中。
  • 如果未生成SQL,则只要字段列表发生更改,您就必须找到一些方法来修改它。

也就是说,从长远来看,拥有一个总是增加的字段列表听起来并不健康 - 你可能想看一下你的设计,看看是否一切都应该如此。