Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наибольший остаток / 2 сообщений из 2, страница 1 из 1
22.01.2020, 18:11
    #39917495
Egor111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наибольший остаток
Перелопатил инет, пока что не могу качественно сделать запрос из-за сложности группировок и фильтров.

Подскажите, как можно переписать чтоб выводило
Артикул,
Агента с наибольшим остатком в рублях на конец периода( их несколько по одному артикулу),
Сумму остатка но сумму выдавало по артикулу вцелом(не зависимо от Агента)

Подскажите, как лучше, подзапрос, или левое соединение?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT 

articul as "Артикул", 
SUM(CASE WHEN date_end >= Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP)-1,0) AND date_end < Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP),0) THEN tend_amt ELSE 0.00 END) as "Остаток,руб.", 
MAX(agent) as 'Агент'

FROM 
DBO
WHERE
date_start BETWEEN Dateadd(month, - 7, sysdatetime()) AND Dateadd(month, - 1, sysdatetime())
AND dep_code >1 AND dep_code ='5'
AND date_end in 
(
SELECT MAX(date_end)
from  DBO 
WHERE  date_end >= Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP)-1,0) AND date_end < Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP),0)
GROUP BY articul,dep_code
)


GROUP BY articul,dep_code
HAVING SUM( CASE WHEN date_end >= Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP)-1,0) AND date_end < Dateadd(month, DATEDIFF(MONTH,0, CURRENT_TIMESTAMP),0) THEN tend_amt ELSE 0.00 END) >=100000
...
Рейтинг: 0 / 0
22.01.2020, 20:06
    #39917537
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наибольший остаток
Egor111,

Рыба, удочку сами мастерите

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare @Остатки table(Articul int, Agent int, Balance money)
insert into @Остатки values(1,1,100),(1,2,200),(1,3,150),(2,1,110),(2,5,109),(1,4,200)

select top 1 with ties 

T.*, SUM(Balance) OVER(PARTITION BY T.Articul) AS ArticulBalance 
from @Остатки T
order by RANK() OVER(partition by T.Articul order by Balance DESC)


...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наибольший остаток / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]