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

Откуда:
Сообщений: 7
Добрый день,

есть вопрос по скрипту SQL:
есть таблица Stock, в ней есть условно 3 столбца: дата изменения Date, номер товара ID, остаток Rest_Qty.
ID на разные даты повторяются, так как это таблица, хранящая последнюю перезапись остатка.

Задача - посчитать сумму остатка на сегодня, то бишь на последнюю для каждого ID дату,

помогите плиз
17 апр 19, 15:20    [21865138]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
londinium
Member

Откуда: Киев
Сообщений: 1170
mifo,
как-то так:
WITH LASTMOV AS
(
  SELECT WARE_ID,TRANDATE,REST_QTY,
   ROW_NUMBER()OVER(PARTITION BY WARE_ID ORDER BY TRANDATE DESC)AS XCOL
    FROM STOCK
)
SELECT L.WARE_ID,L.REST_QTY
FROM LASTMOV AS L
WHERE L.XCOL=1
17 апр 19, 15:29    [21865151]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

Откуда:
Сообщений: 7
londinium
mifo,
как-то так:
WITH LASTMOV AS
(
  SELECT WARE_ID,TRANDATE,REST_QTY,
   ROW_NUMBER()OVER(PARTITION BY WARE_ID ORDER BY TRANDATE DESC)AS XCOL
    FROM STOCK
)
SELECT L.WARE_ID,L.REST_QTY
FROM LASTMOV AS L
WHERE L.XCOL=1


londinium, спасибо,
но выдает ошибку: Msg 102, Level 15, State 1, Line 13
Incorrect syntax near ')'.
Это в строке, где ROW_NUMBER
17 апр 19, 15:46    [21865181]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
select @@version покажите
17 апр 19, 15:47    [21865184]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

Откуда:
Сообщений: 7
Гавриленко Сергей Алексеевич,

WITH LASTMOV AS
(
SELECT Stock.ItemID, Stock.Date, Stock.RestFactQty),
ROW_NUMBER() OVER(PARTITION BY Stock.ItemID ORDER BY Stock.Date DESC)AS XCOL
FROM Stock
)
SELECT L.Stock.ItemID,L.Stock.RestFactQty
FROM LASTMOV AS L
WHERE L.XCOL=1
17 апр 19, 15:50    [21865189]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
mifo
WITH LASTMOV AS
(
  SELECT Stock.ItemID, Stock.Date, Stock.RestFactQty ),
   ROW_NUMBER() OVER(PARTITION BY Stock.ItemID ORDER BY Stock.Date DESC)AS XCOL
    FROM Stock
)
SELECT L.Stock.ItemID,L.Stock.RestFactQty
FROM LASTMOV AS L
WHERE L.XCOL=1
17 апр 19, 16:02    [21865218]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

Откуда:
Сообщений: 7
Посетитель,

спасибо!
17 апр 19, 16:07    [21865234]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

Откуда:
Сообщений: 7
londinium
mifo,
как-то так:
WITH LASTMOV AS
(
  SELECT WARE_ID,TRANDATE,REST_QTY,
   ROW_NUMBER()OVER(PARTITION BY WARE_ID ORDER BY TRANDATE DESC)AS XCOL
    FROM STOCK
)
SELECT L.WARE_ID,L.REST_QTY
FROM LASTMOV AS L
WHERE L.XCOL=1



еще раз проверил, все выводится корректно по последней дате, кроме остатка, он почему-то тянется не с последней записи,
сможете помочь?
18 апр 19, 12:24    [21865951]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
[quote mifo]
londinium
mifo,
как-то так:
WITH LASTMOV AS
(
  SELECT WARE_ID,TRANDATE,REST_QTY,
   ROW_NUMBER()OVER(PARTITION BY WARE_ID ORDER BY TRANDATE DESC)AS XCOL
    FROM STOCK
)
SELECT L.WARE_ID,L.REST_QTY
FROM LASTMOV AS L
WHERE L.XCOL=1



Всё, это что?
в указанном примере 2 поля
ID и REST_Qty
и они оба для каждой строки гарантированно тянутся из одной записи

видимо, у вас какой то другой запрос
18 апр 19, 12:27    [21865954]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

Откуда:
Сообщений: 7
Посетитель,
я еще добавил дату, дата берется последняя, а вот остаток Rest_Qty тянется не с последней даты
18 апр 19, 12:29    [21865958]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
londinium
Member

Откуда: Киев
Сообщений: 1170
автор
еще раз проверил, все выводится корректно по последней дате, кроме остатка, он почему-то тянется не с последней записи

Возможно.
показывайте пример данных и что пошло не так
Пример очень желательно в виде
WITH CTE AS
(
  SELECT 1 AS ITEM_ID,'20190101'AS TRANDATE,15  AS RestFactQty
     UNION ALL
  SELECT 2 AS ITEM_ID,'20190228'AS TRANDATE,18 AS RestFactQty
    UNION ALL
  SELECT 1 AS ITEM_ID,'20190308'AS TRANDATE,60 AS RestFactQty
)
18 апр 19, 12:30    [21865959]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
mifo
Посетитель,
я еще добавил дату, дата берется последняя, а вот остаток Rest_Qty тянется не с последней даты


ну так приведите код и пример данных на которых код выдает не то, что нужно.
18 апр 19, 12:31    [21865961]     Ответить | Цитировать Сообщить модератору
 Re: сумма по последним записям по ID  [new]
mifo
Member

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

сорри, нашел у себя ошибку, все корректно
18 апр 19, 13:13    [21866034]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить