SQL SUM - GROUP BY - DATETIME - PullRequest
       5

SQL SUM - GROUP BY - DATETIME

0 голосов
/ 09 июля 2020

Я ищу решение для запроса SQL, который может группировать значения по NR, SUM по VALUE, но сохранять только даты, где VALUE положительно. (при том же ЧШ может быть только 1 положительный, остальные отрицательные).

SQL ДАННЫЕ ЗДЕСЬ

SELECT
  NR,
  SUM(VALUE),
  DATE (MUST BE THE DATE WHERE VALUE IS POSITIVE)
FROM TABLE
GROUP BY NR

Ожидаемый результат

ожидаемый результат

Если у кого-то есть решение для этого, помогите пожалуйста. Спасибо.

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Если я вас хорошо понимаю ...

SELECT A.NR, SUM(A.VALUE) AS [Value], B.[Date]
FROM YourTable A INNER JOIN 
(
    SELECT Nr, MAX([Date]) As [Date]
    FROM YourTable
    WHERE [Value]>-1
    GROUP BY Nr
) B ON A.Nr = B.Nr
GROUP BY A.Nr, B.[Date]
0 голосов
/ 09 июля 2020

Ваш запрос просто возвращает максимальную дату для положительных значений. Это простой агрегатный запрос:

select nr, sum(value), max(date)
from t
group by nr
having sum(value) > 0;

Однако в описании предлагается кумулятивная сумма, например:

select t.*
from (select t.*, sum(value) over (order by date) as running_value
      from t
     ) t
where running_value > 0;

Это дает те же результаты для данных в вашем вопросе . Однако, похоже, это именно то, о чем вы просите.

0 голосов
/ 09 июля 2020

Это может быть

SELECT
  NR,
  SUM(VALUE),
  CASE
    WHEN VALUE > 0 THEN DATE
    ELSE ''
  END
FROM
(
  SELECT * FROM tablename ORDER BY VALUE DESC
)
GROUP BY NR
...