powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу обратиться на CTE3
10 сообщений из 10, страница 1 из 1
Не могу обратиться на CTE3
    #40095859
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВОТ РАБОЧИЙ СКРИПТ

; WITH CTE1 AS
(
SELECT *,(([Количество (в базовых ед#)]/[Кол-во])*100)
AS Dolya,
ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])
AS cm,
floor(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина])
AS Face,
floor(([ГЛ#ПОЛКИ]/[глубина ])*(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина]))
AS QuantFace,
floor([ГЛ#ПОЛКИ]/[глубина ])
AS GlubinaFace,
([ДЛ#ПОЛКИ]*[ГЛ#ПОЛКИ])
AS [Площадъ полки,cm2],
floor([Длина]*[глубина ])
AS [Площадь товара, см2],
(([Количество (в базовых ед#)] / sum([Количество (в базовых ед#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара ед., %],
(([Сумма (упр#)] / sum([Сумма (упр#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара тг., %]
FROM [dbo].[БД$]

),CTE2 AS
(
SELECT *,
(([Доля товара ед., %] + [Доля товара тг., %]) / 2 + IIF([Доля товара ед., %] > [Доля товара тг., %], [Доля товара тг., %], [Доля товара ед., %])) / 2 AS [Ср.доли, %]
FROM CTE1
)
(
SELECT *, [Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]) as [Доля на полке, %] ,
(([Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]))*([ДЛ#ПОЛКИ])) as [Кол-во фэйсов на полке, см],
ceiling((([Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]))*([ДЛ#ПОЛКИ]))/[Длина]) as [Кол-во фэйсов на полке, ед]


FROM CTE2
)
),
CTE3 AS

НЕ МОГУ ОБРАТИТЬСЯ НА CTE3, ЧТО ДЕЛАТЬ ?
ПОМОГИТЕ ПОЖАЛУЙСТА
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095860
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adlet
ВОТ РАБОЧИЙ СКРИПТ
он не рабочий
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095870
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
use PLANOGRAMM
SELECT *,(([Количество (в базовых ед#)]/[Кол-во])*100)
AS Dolya,
ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])
AS cm,
floor(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина])
AS Face,
floor(([ГЛ#ПОЛКИ]/[глубина ])*(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина]))
AS QuantFace,
floor([ГЛ#ПОЛКИ]/[глубина ])
AS GlubinaFace,
([ДЛ#ПОЛКИ]*[ГЛ#ПОЛКИ])
AS [Площадъ полки,cm2],
floor([Длина]*[глубина ])
AS [Площадь товара, см2],
(([Количество (в базовых ед#)] / sum([Количество (в базовых ед#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара ед., %],
(([Сумма (упр#)] / sum([Сумма (упр#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара тг., %]
FROM [dbo].[БД$]

WHERE [Длина] IS NOT NULL



; WITH CTE1 AS(
SELECT *,(([Количество (в базовых ед#)]/[Кол-во])*100)
AS Dolya,
ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])
AS cm,
floor(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина])
AS Face,
floor(([ГЛ#ПОЛКИ]/[глубина ])*(ceiling(([Количество (в базовых ед#)]/[Кол-во])*[ДЛ#ПОЛКИ])/[Длина]))
AS QuantFace,
floor([ГЛ#ПОЛКИ]/[глубина ])
AS GlubinaFace,
([ДЛ#ПОЛКИ]*[ГЛ#ПОЛКИ])
AS [Площадъ полки,cm2],
floor([Длина]*[глубина ])
AS [Площадь товара, см2],
(([Количество (в базовых ед#)] / sum([Количество (в базовых ед#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара ед., %],
(([Сумма (упр#)] / sum([Сумма (упр#)]) over(partition by [АДРЕС ]))*100) AS [Доля товара тг., %]
FROM [dbo].[БД$]

),CTE2 AS
(
SELECT *,
(([Доля товара ед., %] + [Доля товара тг., %]) / 2 + IIF([Доля товара ед., %] > [Доля товара тг., %], [Доля товара тг., %], [Доля товара ед., %])) / 2 AS [Ср.доли, %]
FROM CTE1
)
(
SELECT *, [Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]) as [Доля на полке, %] ,
(([Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]))*([ДЛ#ПОЛКИ])) as [Кол-во фэйсов на полке, см],
ceiling((([Ср.доли, %] / sum([Ср.доли, %]) over(partition by [АДРЕС ]))*([ДЛ#ПОЛКИ]))/[Длина]) as [Кол-во фэйсов на полке, ед]

FROM CTE2
)
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095879
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adlet,

Где-то кто-то уже использовал этот код )))
Не вдаваясь в синтаксис:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
WITH CTE1
     AS (SELECT *, 
                ([Количество (в базовых ед#)] / [Кол-во]) * 100 AS Dolya, 
                CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) AS cm, 
                FLOOR(CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина]) AS Face, 
                FLOOR(([ГЛ#ПОЛКИ] / [глубина ]) * CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина]) AS QuantFace, 
                FLOOR([ГЛ#ПОЛКИ] / [глубина ]) AS GlubinaFace, 
                [ДЛ#ПОЛКИ] * [ГЛ#ПОЛКИ] AS [Площадъ полки,cm2], 
                FLOOR([Длина] * [глубина ]) AS [Площадь товара, см2], 
                ([Количество (в базовых ед#)] / SUM([Количество (в базовых ед#)]) OVER(PARTITION BY [АДРЕС ])) * 100 AS [Доля товара ед., %], 
                ([Сумма (упр#)] / SUM([Сумма (упр#)]) OVER(PARTITION BY [АДРЕС ])) * 100 AS [Доля товара тг., %]
           FROM dbo.[БД$]),
     CTE2
     AS (SELECT *, 
                (([Доля товара ед., %] + [Доля товара тг., %]) / 2 + IIF([Доля товара ед., %] > [Доля товара тг., %], [Доля товара тг., %], [Доля товара ед., %])) / 2 AS [Ср.доли, %]
           FROM CTE1),
     CTE3
     AS (SELECT *, 
                [Ср.доли, %] / SUM([Ср.доли, %]) OVER(PARTITION BY [АДРЕС ]) AS [Доля на полке, %], 
                ([Ср.доли, %] / SUM([Ср.доли, %]) OVER(PARTITION BY [АДРЕС ])) * [ДЛ#ПОЛКИ] AS [Кол-во фэйсов на полке, см], 
                CEILING((([Ср.доли, %] / SUM([Ср.доли, %]) OVER(PARTITION BY [АДРЕС ])) * [ДЛ#ПОЛКИ]) / [Длина]) AS [Кол-во фэйсов на полке, ед]
           FROM CTE2)
     SELECT *
       FROM CTE3;




И заведите правило - писать с отступами, чтобы было легко читать код.
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095885
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL

И заведите правило - писать с отступами, чтобы было легко читать код.

поддерживаю
из уважения к участникам форума стоит хотя бы прогонять код через любой форматтер - например, через http://poorsql.com/
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095897
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL
Где-то кто-то уже использовал этот код )))

судя по "[Количество (в базовых ед#)]", - Ablaykhan -а уволили
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095900
Ablaykhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
Если бы 😂
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095902
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

Здравствуйте, Олег это колега Абылайхана :)
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095905
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adlet,
коллега*
...
Рейтинг: 0 / 0
Не могу обратиться на CTE3
    #40095958
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, какая прелесть... Кто-то пишет функцию для выгрузки отчёта в Excel? Какая красота. Как давно я этим не занимался.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу обратиться на CTE3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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