Запрос для получения всех отдельных строк с добавлением столбца с указанием суммы каждого дубликата - PullRequest
0 голосов
/ 12 декабря 2018

Что я ищу:

Мне нужен список с SQL-сервера, на котором будут указаны все идентификаторы, но каждый идентификатор содержит несколько строк.Некоторые строки из каждого идентификатора являются обновлениями системы, поэтому не нужно заботиться о них в моем запросе.

Другими словами:

Мне нужно получить весь список, подсчитав всестроки, которые не из системы для каждого идентификатора.

База данных выглядит следующим образом:

ID | linenumber| data, data, ... data|Requesto| data, data

1  | 1         |.....................|JUAN    |...........
1  | 2         |.....................|SYSTEM  |...........
2  | 1         |.....................|Matias  |...........
2  | 2         |.....................|Matias  |...........
2  | 3         |.....................|Matias  |...........

И мне нужно получить:

ID | CantRoWs  |.....................|WHO is  |...........

1  | 1         |.....................|JUAN    |...........
2  | 3         |.....................|Matias  |...........

Я думал об использовании временного запроса, как показано ниже, но он не работает.

with temp as
    (
      SELECT OVER (PARTITION BY szCID ORDER BY gdReceived desc) as RowNum,*
      FROM TABLE1;
    )
    SELECT *, (Select count(szCID) from TABLE1 where szAccount <> 'system') AS Hits From temp 
    WHERE RowNum = 1

Есть идеи?

1 Ответ

0 голосов
/ 12 декабря 2018

Я бы посоветовал вам начать с использования row_number () и count () внутри общего табличного выражения:

WITH temp
AS (
    SELECT
        *
      , ROW_NUMBER() OVER (PARTITION BY szCID ORDER BY gdReceived DESC) AS RowNum
      , COUNT(*) OVER (PARTITION BY szCID) as hits
    FROM TABLE1
    WHERE szAccount <> 'system'
)
SELECT
    *
FROM temp
WHERE RowNum = 1
...