|
v7: КоличествоСтрок() в прямом запросе |
☑ |
0
zenon46
09.03.21
✎
16:14
|
Доброго дня! Есть прямой запрос к журналу с выборкой по одному виду документа и получения некоторых значений из шапки, а как можно получить количество строк в табличной части в прямом запросе ?
|
|
1
ДенисЧ
09.03.21
✎
16:19
|
левое соединение с сгруппированной тч и count()
|
|
2
Sserj
09.03.21
✎
16:19
|
SQL какой?
|
|
3
zenon46
09.03.21
✎
16:22
|
(2) 2008
|
|
4
Sserj
09.03.21
✎
16:25
|
(3)
select
...
count(жур.iddoc) over() as [СтрокВЗапросе]
from
_1SJOURN as жур
....
|
|
5
Sserj
09.03.21
✎
16:27
|
+(4)
А к примеру:
count(жур.iddoc) over (partition by left(жур.date_time_iddoc, 8)) as [СтрокВДень]
|
|
6
Sserj
09.03.21
✎
16:46
|
А или все перепутал. Это количество строк в самом запросе написал.
Тебе видимо нужно
select
...
, СтрокиДокументов.Количество as [КоличествоСтрок]
from
_1SJOURN as жур
outer apply (select count(*) as [Количество]
from $ДокументСтроки.ВидДокумента as док
where док.iddoc = жур.iddoc) as СтрокиДокументов
|
|
7
zenon46
09.03.21
✎
16:53
|
(6) что-то не осилил я оконные функции, попробую позже, сделал немного по другому.
|
|
8
mikecool
09.03.21
✎
17:57
|
(6) ого как, это типа замена группировки с подсчетом количества?
|
|
9
Sserj
10.03.21
✎
04:36
|
(8) Ну да типа того, только преимущества APPLY в том что SQL применяет этот запрос к каждой строке результирующей выборки, т.е. не нужно повторять все условия как было в соединении с запросом и группировкой, тут уже отобраны только нужные жур.iddoc и второе самое главное APPLY очень хорошо поддается обработке в несколько потоков. Может на SQL2008 это и не будет очень заметно, а вот от SQL2014 и выше такой запрос может отработать на всех доступных ядрах.
|
|