Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 поиск минимальной суммы в максимальной дате  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
1. Есть таблица со значениями. Необходимо выбрать максимальную дату загрузки и среди нее минимальные значения.
пишу код
SELECT 
  T_R1_V_RENT_ALL.DIVISION_ID as DIVISION_ID ,
  max(T_R1_V_RENT_ALL.BEGIN_DTM) as BEGIN_DTM ,
  min(coalesce(NULLIF(T_R1_V_RENT_ALL.RENT_SUM, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MAX, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MIN, 0))) as SUMMA   
FROM 
  ODI_STAGE.dbo.T_RENT_TURNOVER_FEE_SNST as T_R1_V_RENT_ALL  
WHERE
  (T_R1_V_RENT_ALL.CALC_TYPE='ФиксированнаяСумма') and T_R1_V_RENT_ALL.DIVISION_ID=118562
GROUP BY
  T_R1_V_RENT_ALL.DIVISION_ID


выводит
DIVISION_ID BEGIN_DTM SUMMA
118562 2019-01-24 80000.00

хотя данной дате должно соответствовать значение 2018-12-24

как это исправить?
23 сен 19, 11:49    [21976646]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Romanov-krd
хотя данной дате должно соответствовать значение 2018-12-24
То есть среди всех строк с DIVISION_ID=118562, дата 2018-12-24 является максимальной, а 2019-01-24 там вообще не наблюдается?

Вы сделайте запрос без группировки и min/max, и посмотрите, соответствуют ли полученные значения данным.
Вряд ли сервер ошибся с группировкой.
23 сен 19, 11:56    [21976653]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
SELECT TOP(1) WITH TIES DIVISION_ID, BEGIN_DTM, COALESCE(NULLIF(T_R1_V_RENT_ALL.RENT_SUM, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MAX, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MIN, 0)) SUMMA   
FROM ODI_STAGE.dbo.T_RENT_TURNOVER_FEE_SNST
WHERE CALC_TYPE='ФиксированнаяСумма' AND T_R1_V_RENT_ALL.DIVISION_ID=118562
ORDER BY BEGIN_DTM DESC, COALESCE(NULLIF(T_R1_V_RENT_ALL.RENT_SUM, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MAX, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MIN, 0));
23 сен 19, 12:16    [21976686]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Поправил слегка
SELECT TOP(1) WITH TIES DIVISION_ID, BEGIN_DTM, COALESCE(NULLIF(RENT_SUM, 0),NULLIF(RENT_SUM_MAX, 0),NULLIF(RENT_SUM_MIN, 0)) SUMMA   
FROM ODI_STAGE.dbo.T_RENT_TURNOVER_FEE_SNST
WHERE CALC_TYPE='ФиксированнаяСумма' AND DIVISION_ID=118562
ORDER BY BEGIN_DTM DESC, COALESCE(NULLIF(RENT_SUM, 0),NULLIF(RENT_SUM_MAX, 0),NULLIF(RENT_SUM_MIN, 0));
23 сен 19, 12:19    [21976689]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
alexeyvg,

дата то есть. мне просто вывести из всего нужно

80000.00- 2018-12-24 00:00:00.0000000

К сообщению приложен файл. Размер - 5Kb
23 сен 19, 12:27    [21976709]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
Interloper
Member

Откуда: Москва
Сообщений: 544
Romanov-krd
alexeyvg,

дата то есть. мне просто вывести из всего нужно

80000.00- 2018-12-24 00:00:00.0000000

> Необходимо выбрать максимальную дату загрузки и среди нее минимальные значения.

Максимальная дата на картинке 2019-12-24. Почему нужно вывести 2018-12-24?
23 сен 19, 16:17    [21977061]     Ответить | Цитировать Сообщить модератору
 Re: поиск минимальной суммы в максимальной дате  [new]
Papadopulos
Member

Откуда:
Сообщений: 211
Romanov-krd,

SELECT 
  T_R1_V_RENT_ALL.DIVISION_ID as DIVISION_ID ,
  T_R1_V_RENT_ALL.BEGIN_DTM as BEGIN_DTM ,
  min(coalesce(NULLIF(T_R1_V_RENT_ALL.RENT_SUM, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MAX, 0),NULLIF(T_R1_V_RENT_ALL.RENT_SUM_MIN, 0))) as SUMMA   
FROM 
  ODI_STAGE.dbo.T_RENT_TURNOVER_FEE_SNST as T_R1_V_RENT_ALL  
WHERE
  (T_R1_V_RENT_ALL.CALC_TYPE='ФиксированнаяСумма') and T_R1_V_RENT_ALL.DIVISION_ID=118562
GROUP BY
  T_R1_V_RENT_ALL.DIVISION_ID, T_R1_V_RENT_ALL.BEGIN_DTM, 
HAVING 
  T_R1_V_RENT_ALL.BEGIN_DTM = (select MAX(T_R1_V_RENT_ALL.BEGIN_DTM) from ODI_STAGE.dbo.T_RENT_TURNOVER_FEE_SNST)
24 сен 19, 15:38    [21978095]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить