0

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

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

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

基本上我正在尝试构建一个更大的查询,只是一步一步地进行。called我需要一个查询来为每个返回最新条目caller

4

3 回答 3

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
于 2012-12-04T10:54:10.133 回答
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 小提琴演示

于 2012-12-04T10:49:35.100 回答
0

我认为原因是您不能按多个类别进行分组,请看下面的示例:

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

查看此网站以获取有关此 网站的更多示例

于 2012-12-04T10:51:20.003 回答