powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Организация вывода взаимосвязных таблиц в одну
5 сообщений из 5, страница 1 из 1
Организация вывода взаимосвязных таблиц в одну
    #39771983
BF_KARATEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть БД (Отрывок на фото), пишу хранимую процедуру которая ищет по определенным параметрам и генерирую отчет в C#. проблема в следующем: мне надо что бы генерировало как в варианте 1 а сейчас генерируется как во 2 варианте. Кто знает как сделать? или это уже надо в win forme делать ?


Хранимая процедура:

Код: 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.
USE [Lombard]
GO
/****** Object:  StoredProcedure [dbo].[YVD]    Script Date: 11.02.2019 11:06:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[YVD] @dataot NVARCHAR(10), @datado NVARCHAR(10) 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
select t_pledge.data, t_subject.name_subject, t_subject.comments, 
(t_person.surname+' '+t_person.name+' '+t_person.patronymic) as thisclient, 
(t_document.tip_documenta+': '+t_document.series+' '+t_document.number+', '+t_document.issued) as doc,
 t_meta_property.name_meta_property, t_property.value
FROM t_subject 
JOIN t_pledge ON t_pledge.id_pledge=t_subject.id_pledge
JOIN t_person ON t_person.id_person=t_pledge.id_client
JOIN t_document ON t_document.id_document=t_pledge.id_document
JOIN t_property ON  t_property.id_subject=t_subject.id_subject
JOIN t_meta_property ON t_meta_property.id_meta_property=t_property.id_meta_property
WHERE t_subject.status='В залоге' AND t_pledge.data>@dataot AND t_pledge.data<@datado
END
...
Рейтинг: 0 / 0
Организация вывода взаимосвязных таблиц в одну
    #39772068
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BF_KARATELили это уже надо в win forme делать ?Собственно, в любой уважающей себя отчетной системе есть опция для вывода в поле "скрывать повтор" (или как-то так)

Но если стоит задача "погреть сервер" сделать именно на сервере, то проще всего как-то так:

Код: 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 cte as (
	select t_pledge.data, t_subject.name_subject, t_subject.comments, 
	(t_person.surname+' '+t_person.name+' '+t_person.patronymic) as thisclient, 
	(t_document.tip_documenta+': '+t_document.series+' '+t_document.number+', '+t_document.issued) as doc,
	 t_meta_property.name_meta_property, t_property.value
	 ,rn	=row_number()over(partition by t_pledge.data, t_subject.name_subject, t_subject.comments,(t_person.surname+' '+t_person.name+' '+t_person.patronymic) order by t_meta_property.name_meta_property, t_property.value)
	FROM t_subject 
	JOIN t_pledge ON t_pledge.id_pledge=t_subject.id_pledge
	JOIN t_person ON t_person.id_person=t_pledge.id_client
	JOIN t_document ON t_document.id_document=t_pledge.id_document
	JOIN t_property ON  t_property.id_subject=t_subject.id_subject
	JOIN t_meta_property ON t_meta_property.id_meta_property=t_property.id_meta_property
	WHERE t_subject.status='В залоге' AND t_pledge.data>@dataot AND t_pledge.data<@datado)

select 
	data			=case when rn=1 then data end
	,name_subject	=case when rn=1 then name_subject end
	,comments		=case when rn=1 then comments end
	,thisclient		=case when rn=1 then thisclient end
	,doc			=case when rn=1 then doc end
	,name_meta_property
	,value
from cte 
order by data, name_subject, comments, thisclient, rn
...
Рейтинг: 0 / 0
Организация вывода взаимосвязных таблиц в одну
    #39772134
BF_KARATEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
court ,rn =row_number()over(partition by t_pledge.data, t_subject.name_subject, t_subject.comments,(t_person.surname+' '+t_person.name+' '+t_person.patronymic) order by t_meta_property.name_meta_property, t_property.value)

Вы получается здесь используете обобщенное табличное выражение в котором переменной rn присваиваете номер возвращаемый функцией row_number которая нумерует строки при этом конструкцией PARTITION BY вы задает группы строк, для которых выполняется независимая нумерация с сортировкой по полям t_meta_property.name_meta_property, t_property.value Верно ?

(Просто sql не так сильно изучал)
...
Рейтинг: 0 / 0
Организация вывода взаимосвязных таблиц в одну
    #39772141
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BF_KARATELcourt,
court ,rn =row_number()over(partition by t_pledge.data, t_subject.name_subject, t_subject.comments,(t_person.surname+' '+t_person.name+' '+t_person.patronymic) order by t_meta_property.name_meta_property, t_property.value)

Вы получается здесь используете обобщенное табличное выражение в котором переменной rn присваиваете номер возвращаемый функцией row_number которая нумерует строки при этом конструкцией PARTITION BY вы задает группы строк, для которых выполняется независимая нумерация с сортировкой по полям t_meta_property.name_meta_property, t_property.value Верно ?

(Просто sql не так сильно изучал)да, всё более-менее так
(только rn не переменная, а доп.поле формируемое в CTE)
...
Рейтинг: 0 / 0
Организация вывода взаимосвязных таблиц в одну
    #39772154
BF_KARATEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

Спасибо большое!!! наверное в каком нибудь далеком будущем я смогу так же как вы писать на sql, но это не точно =), а так если не секрет сколько лет у вас стажа в SQL и реально ли вы его переменяет в работе ?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Организация вывода взаимосвязных таблиц в одну
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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