Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать такую группировку  [new]
sasa85
Member

Откуда:
Сообщений: 75
Есть таблица Pred - предприятия и есть таблица PL - площадки предприятий.
У предприятия может быть больше 1 площадки
Как сделать так чтобы выводилось так:

Если у предприятия более 1 плщадки:
Пред1 Площадка1
Пусто Площадка2

где Пусто - это просто ""
12 май 12, 13:21    [12541937]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
row_number() + case
12 май 12, 13:24    [12541962]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
Мне кажется подход к проблеме неправильный...
Запрос и должен возвращать набор:
Пред1 Площадка1
Пред1 Площадка2
...

Другое дело как его отображать пользователям? Каким контролом и как этот контрол заполнить, а есть отображать в HTML, то просто анализом...
12 май 12, 13:26    [12541984]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
если это только для 'красивого' отображение данных, то лучше такие штучки делать в том приложении которое данные показывает, а не на сервере
12 май 12, 13:27    [12541990]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
sasa85
Member

Откуда:
Сообщений: 75
Гавриленко Сергей Алексеевич,

А пример не покажите?

Нужно именно в СКЛ, так как это для простого отчета и понадобится 1 раз всего лишь.
12 май 12, 13:29    [12542001]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
sasa85
Как сделать так чтобы выводилось так:
А версия какая?
12 май 12, 13:36    [12542053]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
Max_Tpop
Member

Откуда:
Сообщений: 103
sasa85
..так как это для простого отчета и понадобится 1 раз всего лишь.


С помощью чего отчет делаете? Я думаю что лучше это будет там реализовать, а не на сервере.
12 май 12, 13:41    [12542091]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
sasa85
Member

Откуда:
Сообщений: 75
MSSQL 2008 экспресс
делаю в Менеджмент студии, вывод из менеджмент студии конверчу в эксель и дальше в ворд )))
Нужно 1 раз такое, поэтому хотелось средствами SQL
12 май 12, 13:45    [12542118]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
Гузы
Guest
sasa85,
В екселе в сводную и будет тебе счастье.
А в СКУЛе тупо:
select 
case when nn>1 then null else connection_id end, 'pp' +CAST(nn as varchar)
from
(
select  ROW_NUMBER() over(partition by connection_id order by product_order_id) nn ,connection_id,  
(COUNT(product_order_id) over(partition by connection_id)) no from
product_order
where connection_id is not null
)tt
where no>1

Впрочем уже было.
примера нет - сам дальше.
12 май 12, 13:59    [12542222]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
sasa85
Member

Откуда:
Сообщений: 75
Гузы,

А как в моем случае? Это СКЛ аля
Пред1 Площадка1
Пред1 Площадка2

SELECT DISTINCT Ent.*, Ia.Name FROM Enterprises AS Ent JOIN IndustrialAreas AS Ia ON Ia.EnterpriseID = Ent.ID
12 май 12, 14:23    [12542379]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такую группировку  [new]
rector
Member

Откуда: Киев
Сообщений: 57
sasa85,

Вот вариант как Гузы , только проще

DECLARE @pred TABLE  (
	pred_name NVARCHAR(30),
	pl_name NVARCHAR(30)
)

INSERT INTO @pred 
SELECT 'Предприятие1', 'Площадка1'
UNION ALL
SELECT 'Предприятие1', 'Площадка2'
UNION ALL
SELECT 'Предприятие1', 'Площадка3'
UNION ALL
SELECT 'Предприятие2', 'Площадка1'


SELECT 
	CASE 
	WHEN ROW_NUMBER() OVER ( PARTITION BY p.pred_name ORDER BY p.pred_name)<>1 THEN ''
	WHEN ROW_NUMBER() OVER ( PARTITION BY p.pred_name ORDER BY p.pred_name) = 1 THEN p.pred_name
	END AS 'PredName',
	p.pl_name   
FROM @pred p
12 май 12, 17:30    [12543781]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить