GROUP BY并不明显

时间:2012-12-04 10:48:06

标签: sql sql-server tsql

我似乎无法理解为什么,但我正在尝试这个查询:

SELECT called,caller,time,duration
FROM Calls
GROUP BY called,caller,time,duration

但是返回具有相同called值的行,这不是我想要的。

基本上我正在尝试构建一个更大的查询,只是一步一步地进行。 我需要一个查询来返回每calledcaller

的最新条目

3 个答案:

答案 0 :(得分:1)

假设您只想要不同的called值,而是所有列。如果有多个called我只采用最后一个(按time排序):

WITH CTE AS
(
   SELECT called,caller,time,duration,
      RN = ROW_NUMBER() OVER (PARTITION BY called ORDER BY time DESC)
   FROM Calls
)
SELECT called,caller,time,duration
FROM CTE WHERE RN = 1

答案 1 :(得分:0)

  

我需要一个查询来返回每个被调用者的最新条目

请改为尝试:

;WITH CTE
AS
(
    SELECT
      called,
      caller,
      time,
      duration,
      ROW_NUMBER() OVER(PARTITION BY caller
                        ORDER BY called DESC) rownum
    FROM Calls
)
SELECT
  called,
  caller,
  time,
  duration
FROM CTE 
WHERE rownum = 1;

SQL Fiddle Demo

答案 2 :(得分:0)

我认为原因是你不能按多个类别进行分组,请参考以下示例:

SELECT column_name, aggregate_function(column_name)
 FROM table_name
 WHERE column_name operator value
 GROUP BY column_name 

有关此问题的更多示例,请查看此网站 WEBSITE