Имя: Пароль:
1C
 
Помогите въехать в запрос, не 1С, SQL
, ,
0 Kongo2019
 
16.09.22
15:47
Запрос

INSERT INTO [BP].[dbo].[rpt_SKU_Rate] --SELECT * FROM [worknp].[dbo].[BP_SKU_Rate]
SELECT
  S.RegionID,
  --S.[Month],
  S.TypeTRT,
  S.Brand,
  S.ProdId,
  cast(S.Qty as float)/cast(SA.Qty as float) [Rate]
FROM #SLS S
JOIN --Общие продажи по бренду в регионе
(
  SELECT RegionID, Brand, sum(Qty) [Qty]
  FROM #SLS
  GROUP BY RegionID, Brand
  HAVING sum(Qty) > 0
) SA ON SA.RegionID = S.RegionID and SA.Brand = S.Brand
ORDER BY 2,3

Если я правильно понял
cast(S.Qty as float)/cast(SA.Qty as float)
где cast(SA.Qty as float) всего  продажи по бренду в регионе
а S.Qty as float всего продажи в регионе
То бишь собираются продажи по региону в таблицу #SLS
и делят на общую суму продаж в регионе.
1 VladZ
 
16.09.22
15:57
S.Qty и SA.Qty - ты за буквы деньги платишь? Со второго раза только увидел, что это разные вещи.
2 Конструктор1С
 
16.09.22
16:01
(1) Г1С такие псевдонимы одобряэ
3 Конструктор1С
 
16.09.22
16:14
Наглядный пример, как экономия на именах приводит к вызову пояснительной бригады и помощи зала
4 Kongo2019
 
16.09.22
16:23
(1) Это не я, это в наследство досталось
5 АНДР
 
16.09.22
17:12
(0) S.Qty - продажи конкретного товара (ProdId) в разрезе производителя (Brand) и региона (RegionID).
Запрос даёт (процентное, если домножить на 100) распределение проданных товаров внутри производителя в разрезе регионов.
6 Курцвейл
 
16.09.22
18:13
Запрос лучше еще раз поместить во временную таблицу. Если использовать временные таблицы, так по полной :)
7 Курцвейл
 
16.09.22
18:14
(6) Точнее речь о подзапросе который именован SA
8 Said_We
 
16.09.22
18:40
(0) Так в чем вопрос-то?
"помогите въехать..." - что нужно сделать и что не понятно.

Ну и встречный вопрос: Что за версия SQL? Если какая-то свежая, то зачем тут джоин?
9 Said_We
 
16.09.22
18:43
(0) "а S.Qty as float всего продажи в регионе" - нет. Это какая-то запись при этом в разрезе бренда тоже.
Запрос должен показать долю продаж конкретной записи к общему числу продаж по Региону + Бренд.
10 Said_We
 
16.09.22
18:45
(0) "INSERT INTO" не только показать, но и ...
11 Said_We
 
16.09.22
18:47
HAVING sum(Qty) > 0 не понятно зачем, если на это потом ещё тут и делят.
cast(S.Qty as float)/cast(SA.Qty as float)
Если ноль, то по связи будет NULL. На что делить будем.
12 Said_We
 
16.09.22
19:48
К (11)
SELECT CAST(NULL as float) вернёт NULL.
SELECT 3.14 / CAST(NULL as float) тоже вернёт NULL
13 АНДР
 
17.09.22
10:31
(11) Если по в регионе не было продаж данного бренда, то JOIN отсечет этот разрез из результата.
14 TormozIT
 
гуру
17.09.22
12:41
Как (0) связан с 1С?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан