理由がわからないようですが、このクエリを試しています:
SELECT called,caller,time,duration
FROM Calls
GROUP BY called,caller,time,duration
called
しかし、それは私が望んでいない同じ値を持つ行を返します。
基本的に、私はより大きなクエリを構築しようとしていますが、それを段階的に進めています。called
perごとに最新のエントリを返すクエリが必要ですcaller
理由がわからないようですが、このクエリを試しています:
SELECT called,caller,time,duration
FROM Calls
GROUP BY called,caller,time,duration
called
しかし、それは私が望んでいない同じ値を持つ行を返します。
基本的に、私はより大きなクエリを構築しようとしていますが、それを段階的に進めています。called
perごとに最新のエントリを返すクエリが必要ですcaller
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
複数のカテゴリでグループ化できないことが理由だと思います。以下の例をご覧ください。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
このウェブサイトのその他の例については、このウェブサイトをご覧ください 。
呼び出し元ごとに呼び出されるたびに最新のエントリを返すクエリが必要です
代わりにこれを試してください:
;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;