0

理由がわからないようですが、このクエリを試しています:

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

calledしかし、それは私が望んでいない同じ値を持つ行を返します。

基本的に、私はより大きなクエリを構築しようとしていますが、それを段階的に進めています。calledperごとに最新のエントリを返すクエリが必要です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

複数のカテゴリでグループ化できないことが理由だと思います。以下の例をご覧ください。

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 に答える
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 に答える