powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / reporting services построение отчета
5 сообщений из 5, страница 1 из 1
reporting services построение отчета
    #36767002
Alxndr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

В sql и системах отчетности новичек, прошу не ругаться если вопрос окажется тривиальным, но порывшись день в инете так и не понял как можно сделать следующее:
есть два запроса (одинаковые по структуре но отличается параметр - проверка строки на NULL и IS NOT NULL):

1 запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT      SUM(dbo.[_БД СИ].Общ_колво_приб_в_поверку) AS [Общ.кол.в калибровку], dbo.клсф_Группа_СИ.[Виды измерений]
FROM          dbo.[клсф_Наименование СИ] INNER JOIN
                        dbo.клсф_Группа_СИ ON dbo.[клсф_Наименование СИ].Код_гр_СИ_расш = dbo.клсф_Группа_СИ.[№_п_п_код] INNER JOIN
                        dbo.[клсф_Тип СИ] ON dbo.[клсф_Наименование СИ].Код = dbo.[клсф_Тип СИ].Наименование_СИ_Код INNER JOIN
                        dbo.[_БД измерений] INNER JOIN
                        dbo.[_БД СИ] ON dbo.[_БД измерений].Код_СИ = dbo.[_БД СИ].Код ON dbo.[клсф_Тип СИ].Код = dbo.[_БД СИ].Код_Тип_СИ
WHERE      (dbo.[_БД измерений].Код_типовой_перечень_тип_изм_в_пов IS NULL)
GROUP BY dbo.клсф_Группа_СИ.[Виды измерений]
ORDER BY dbo.клсф_Группа_СИ.[Виды измерений]

2 запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT   SUM(dbo.[_БД СИ].Общ_колво_приб_в_поверку) AS [Общ.кол.в калибровку], dbo.клсф_Группа_СИ.[Виды измерений]
FROM          dbo.[клсф_Наименование СИ] INNER JOIN
                        dbo.клсф_Группа_СИ ON dbo.[клсф_Наименование СИ].Код_гр_СИ_расш = dbo.клсф_Группа_СИ.[№_п_п_код] INNER JOIN
                        dbo.[клсф_Тип СИ] ON dbo.[клсф_Наименование СИ].Код = dbo.[клсф_Тип СИ].Наименование_СИ_Код INNER JOIN
                        dbo.[_БД измерений] INNER JOIN
                        dbo.[_БД СИ] ON dbo.[_БД измерений].Код_СИ = dbo.[_БД СИ].Код ON dbo.[клсф_Тип СИ].Код = dbo.[_БД СИ].Код_Тип_СИ
WHERE      (dbo.[_БД измерений].Код_типовой_перечень_тип_изм_в_пов IS NOT NULL)
GROUP BY dbo.клсф_Группа_СИ.[Виды измерений]
ORDER BY dbo.клсф_Группа_СИ.[Виды измерений]

те результатом запросов служит например две выборки:

группа измер1 количество1
группа измер2 количество2
группа измер3 количество3
группа измер5 количество5
.......

группа измер1 количество1_1
группа измер2 количество2_2
группа измер3 количество3_3
группа измер4 количество4_4
.......

не подскажите возможно ли в RS построить отчет на базе этих двух выборок вида:

группа измер1 количество1 количество1_1
группа измер2 количество2 количество2_1
группа измер3 количество3 количество3_1
группа измер4 0 количество4_4
группа измер5 количество5 0

при этом возникает проблема в том, что в одной или другой выборке первый столбец может не содержать строки которая должна присутствовать в результирующем отчете (например из первого запроса - группа измер4 - отсутствует в первой выборке, но необходимо поставить 0 в итоговый отчет)

подскажите плз. как это можно реализовать или хотя бы в какую сторону смотреть?

заранее спасибо
...
Рейтинг: 0 / 0
reporting services построение отчета
    #36767027
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Select coalesce(t1.field1,t2.dield1), coalesce(t1.field2, 0 ), coalesce(t2.field2, 0 )
from 
( select ... from... IS NULL) t1
full join 
(select ... from... IS NOT NULL)t2
on t1.field1=t2.field1

Не подойдет?
...
Рейтинг: 0 / 0
reporting services построение отчета
    #36767083
Alxndr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buven, спасибо шайтан, маг, чародей

я в шоке, такая конструкция работает и отчет построился:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT      COALESCE (t1.[Виды измерений], t2.[Виды измерений]) AS Expr1, COALESCE (t1.[Общ.кол.в калибровку],  0 ) AS Expr2, 
                        COALESCE (t2.[Общ.кол.в калибровку],  0 ) AS Expr3
FROM          (SELECT      SUM(dbo.[_БД СИ].Общ_колво_приб_в_поверку) AS [Общ.кол.в калибровку], dbo.клсф_Группа_СИ.[Виды измерений]
                        FROM           dbo.[клсф_Наименование СИ] INNER JOIN
                                                dbo.клсф_Группа_СИ ON dbo.[клсф_Наименование СИ].Код_гр_СИ_расш = dbo.клсф_Группа_СИ.[№_п_п_код] INNER JOIN
                                                dbo.[клсф_Тип СИ] ON dbo.[клсф_Наименование СИ].Код = dbo.[клсф_Тип СИ].Наименование_СИ_Код INNER JOIN
                                                dbo.[_БД измерений] INNER JOIN
                                                dbo.[_БД СИ] ON dbo.[_БД измерений].Код_СИ = dbo.[_БД СИ].Код ON dbo.[клсф_Тип СИ].Код = dbo.[_БД СИ].Код_Тип_СИ
                        WHERE       (dbo.[_БД измерений].Код_типовой_перечень_тип_изм_в_пов IS NULL)
                        GROUP BY dbo.клсф_Группа_СИ.[Виды измерений]) t1 FULL OUTER JOIN
                            (SELECT      SUM(dbo.[_БД СИ].Общ_колво_приб_в_поверку) AS [Общ.кол.в калибровку], dbo.клсф_Группа_СИ.[Виды измерений]
                              FROM           dbo.[клсф_Наименование СИ] INNER JOIN
                                                      dbo.клсф_Группа_СИ ON dbo.[клсф_Наименование СИ].Код_гр_СИ_расш = dbo.клсф_Группа_СИ.[№_п_п_код] INNER JOIN
                                                      dbo.[клсф_Тип СИ] ON dbo.[клсф_Наименование СИ].Код = dbo.[клсф_Тип СИ].Наименование_СИ_Код INNER JOIN
                                                      dbo.[_БД измерений] INNER JOIN
                                                      dbo.[_БД СИ] ON dbo.[_БД измерений].Код_СИ = dbo.[_БД СИ].Код ON dbo.[клсф_Тип СИ].Код = dbo.[_БД СИ].Код_Тип_СИ
                              WHERE       (dbo.[_БД измерений].Код_типовой_перечень_тип_изм_в_пов IS NOT NULL)
                              GROUP BY dbo.клсф_Группа_СИ.[Виды измерений]) t2 ON t1.[Виды измерений] = t2.[Виды измерений]

по видимому это высший пилотаж,
не поделитесь, если есть время, хотя бы на пальцах как такая конструкция работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
Select coalesce(t1.field1,t2.dield1), coalesce(t1.field2, 0 ), coalesce(t2.field2, 0 )
from 
( select ... from... IS NULL) t1
full join 
(select ... from... IS NOT NULL)t2
on t1.field1=t2.field1
, а то плохо быть медведем которого посадили на велосипед и он тупо катается по кругу не понимая что происходит, конечно google.com тоже может помочь, но для новичка там не всегда понятно что написано между строк

заранее спасибо
...
Рейтинг: 0 / 0
reporting services построение отчета
    #36767349
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
reporting services построение отчета
    #36767357
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Она работает так, как вам хотелось бы, при условии уникальности
Код: plaintext
dbo.клсф_Группа_СИ.[Виды измерений]
.
Если ее нет - будет веселее.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / reporting services построение отчета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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