powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL Промежуточные итоги с Заголовком
8 сообщений из 8, страница 1 из 1
MS SQL Промежуточные итоги с Заголовком
    #39877807
shekspeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Помогите пожалуйста с заголовком на запрос с промежуточными итогами.
Имеется запрос на MS SQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
case when LPur.Name is null and LPro.Name is null then 'ВСЕГО:'
	 when LPur.Name is null then 'ИТОГО: '+LPro.Name
	 else LPur.Name
	 end as Title
from Loan_Purpose LPur
left outer join Loan_Product LPro on LPro.ID=LPur.Product_ID
group by rollup (LPro.Name,LPur.Name)



Даёт следующее:
TitleПотребительский-на медицинское лечение Потребительский-на обучениеИТОГО: ПотребительскийПроизводство продуктов питанияПроизводство строит материаловИТОГО: ПроизводствоУслуги транспорта и перевозка грузовУслуги швейного цехаИТОГО: УслугиВСЕГО:

Необходимо вставить заголовки перед каждым продуктом. То есть так:
Title Потребительский Потребительский на медицинское лечение Потребительский на обучениеИТОГО: Потребительский Производство Производство продуктов питанияПроизводство строит материаловИТОГО: Производство Услуги Услуги транспорта и перевозка грузовУслуги швейного цехаИТОГО: УслугиВСЕГО:
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39877840
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROUP BY GRUPING SETS позволит вам управлять подитогоми как захотите.
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39877993
shekspeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

под итоги у меня есть. мне нужны заголовки. Вот подробней с цифрами:

TitleПотребительский NULLПотребительский на медицинское лечение 1Потребительский на обучение 1ИТОГО: Потребительский 2Производство NULLПроизводство продуктов питания 1Производство строит материалов 2ИТОГО: Производство 3Услуги NULLУслуги транспорта и перевозка грузов 3Услуги швейного цеха 4ИТОГО: Услуги 7ВСЕГО: 12
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39878067
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shekspeera_voronin,

под итоги у меня есть. мне нужны заголовки. Вот подробней с цифрами:

TitleПотребительский NULLПотребительский на медицинское лечение 1Потребительский на обучение 1ИТОГО: Потребительский 2Производство NULLПроизводство продуктов питания 1Производство строит материалов 2ИТОГО: Производство 3Услуги NULLУслуги транспорта и перевозка грузов 3Услуги швейного цеха 4ИТОГО: Услуги 7ВСЕГО: 12

Где-то так (если я правильно понял задачу):


Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create table #LPur (Product_ID int, Name varchar(50))

create table #LPro (ID int, Name varchar(50))

insert into #LPur (Product_ID, Name) values (1, 'Потребительский-на медицинское лечение'),(1, 'Потребительский-на обучение')
insert into #LPur (Product_ID, Name) values (2, 'Производство продуктов питания'),(2, 'Производство строит материалов')
insert into #LPur (Product_ID, Name) values (3, 'Услуги транспорта и перевозка грузов'),(3, 'Услуги швейного цеха')

insert into #LPro (ID, Name) values (1, 'Потребительский'),(2, 'Производство'), (3, 'Услуги')



;
with cte (ID, Name)
as
(
select ID, Name from #LPro
union all
select Product_ID, Name from #LPur
)

select 
case when LPur.Name is null and LPro.Name is null then 'ВСЕГО:'
	 when LPur.Name is null then 'ИТОГО: '+LPro.Name
	 else LPur.Name
	 end as Title
from cte LPur
left outer join #LPro LPro on LPro.ID=LPur.ID
group by rollup (LPro.Name,LPur.Name)

drop table #LPro

drop table #LPur
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39878358
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist,

Держите, но лучше изучите OLAP кубы дабы не страдать подобным .....

Даже матрица на репортинге может решить это.

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
SET LANGUAGE Russian; 

create table #LPur (Product_ID int, Name nvarchar(50))

create table #LPro (ID int, Name nvarchar(50))

insert into #LPur (Product_ID, Name) values (1, N'Потребительский-на медицинское лечение'),(1, N'Потребительский-на обучение')
insert into #LPur (Product_ID, Name) values (2, N'Производство продуктов питания'),(2, N'Производство строит материалов')
insert into #LPur (Product_ID, Name) values (3, N'Услуги транспорта и перевозка грузов'),(3, N'Услуги швейного цеха')

insert into #LPro (ID, Name) values (1, N'Потребительский'),(2, N'Производство'), (3, N'Услуги')



;
with cte (ID, Name)
as
(
select ID, Name from #LPro
union all
select Product_ID, Name from #LPur
),
cte2 AS (
select 
	LPro.Name AS name1, 
	LPur.Name AS name2,
	GROUPING(LPur.Name) AS gr,
	ROW_NUMBER() OVER (PARTITION BY GROUPING(LPur.Name), LPro.Name ORDER BY (SELECT NULL)) AS RN
from cte LPur
left outer join #LPro LPro on LPro.ID=LPur.ID
group by grouping sets ((LPro.Name,LPur.Name), (LPro.Name), (LPro.Name))
) 
SELECT 
	case gr WHEN 0 THEN name2
			WHEN 1 THEN 
				CASE RN WHEN 1 THEN N'ЗАГОЛОВОК:' + Name1
						WHEN 2 THEN N'ИТОГО:' + Name1
				END
	END
FROM cte2
ORDER BY 
	name1, 
	case gr WHEN 0 THEN 1
			WHEN 1 THEN 
				CASE RN WHEN 1 THEN 0
						WHEN 2 THEN 2
				END
	END, 
	name2

drop table #LPro

drop table #LPur
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39878365
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 a_voronin

a_voroninPaulWist,

Держите, но лучше изучите OLAP кубы дабы не страдать подобным .....

Даже матрица на репортинге может решить это.


1. Это не ко мне, а к ТСу. (shekspeer)

2. У ТСа ещё фигурирует строчка ВСЕГО. :)
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39878383
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist2. У ТСа ещё фигурирует строчка ВСЕГО. :)

ТС доделает надеюсь

GROUPING(LPro.Name) = 1 AND GROUPING(LPur.Name) = 1
...
Рейтинг: 0 / 0
MS SQL Промежуточные итоги с Заголовком
    #39878607
shekspeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем решил задачу по вашим примерам.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL Промежуточные итоги с Заголовком
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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