Вход | Регистрация
 

Помогите разобрать запрос ms sql

Помогите разобрать запрос ms sql
Я
   НичегоНеПонятно
 
11.04.20 - 14:43
Извините за тупые вопросы, слишком давно был mssql и был он в каком то другом виде, тут чего то туплю. Есть вот такой запрос:
ВЫБРАТЬ
    ТоварыВРозницеОстатки.Номенклатура
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки
ГДЕ
    ТоварыВРозницеОстатки.КоличествоОстаток > 0
    И ТоварыВРозницеОстатки.Номенклатура.Выгружать

Он конвертируется в такой запрос в профайлере
exec sp_executesql N'SELECT
T1.Fld7306RRef
FROM (SELECT
T2._Fld7306RRef AS Fld7306RRef,
CAST(SUM(T2._Fld7310) AS NUMERIC(32, 8)) AS Fld7310Balance_
FROM _AccumRgT7313 T2 WITH(NOLOCK)
WHERE T2._Period = P1
GROUP BY T2._Fld7306RRef
HAVING (CAST(SUM(T2._Fld7310) AS NUMERIC(32, 8))) <> @P2) T1
LEFT OUTER JOIN _Reference53 T3 WITH(NOLOCK)
ON T1.Fld7306RRef = T3._IDRRef
WHERE (T1.Fld7310Balance_ > @P3) AND T3._Fld8230 = 0x01',N'P1 datetime2(3),@P2 numeric(10),@P3 numeric(10)','5999-11-01 00:00:00',0,0

Вот какие вопросы
1. N'P1 datetime2(3),@P2 numeric(10),@P3 numeric(10)' это он сначала перечисляет типы параметров а потом уже вот здесь '5999-11-01 00:00:00',0,0 их значение?
2. HAVING как я понял это условие на группировку которую он делает для таблицы итогов, но почему не равно ноль? ведь я указывал больше ноля в 1с запросе?
   Волшебник
 
Модератор
1 - 11.04.20 - 14:53
условие "Остаток > 0" здесь
T1.Fld7310Balance_ > @P3
   H A D G E H O G s
 
2 - 11.04.20 - 14:55
(0) Он всегда вложенным запросом сворачивает итоговую таблицу, потому что в 8.3 может быть несколько итоговых записей, потому что есть РазрешитьРазделениеИтогов

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.