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

Откуда:
Сообщений: 29
Есть две таблицы: user и work
user                                   work
id name                              id job u_id  
1  Олег                               1  работа  1 
2  Коля                               2  Пахота  1
                                         3  Прыжок  2

Какой sql запрос построить чтобы получилось:
Олег     Работа
           Пахота
Коля     Прыжок


Чтобы не выдавал результат
Олег           Работа
Олег           Пахота
Коля           Прыжок



Спасибо за помощь.
25 май 16, 12:26    [19217192]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Alt_Evgen,

LAG, если версия сервера позволяет
25 май 16, 12:28    [19217205]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Alt_Evgen,
user u JOIN work w ON u.id=w.u_id
Это же очевидно. Должно быть в подсознании
25 май 16, 12:29    [19217226]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
Alt_Evgen
Member

Откуда:
Сообщений: 29
TaPaK
Alt_Evgen,

LAG, если версия сервера позволяет


MS sql 2012
А что за LAG? щас посмотрю
25 май 16, 12:30    [19217228]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
iap
Alt_Evgen,
user u JOIN work w ON u.id=w.u_id
Это же очевидно. Должно быть в подсознании
ээ а чем это поможет горю?
25 май 16, 12:32    [19217258]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
Alt_Evgen
Member

Откуда:
Сообщений: 29
iap
Alt_Evgen,
user u JOIN work w ON u.id=w.u_id
Это же очевидно. Должно быть в подсознании


через этот запрос получается
Олег           Работа
Олег           Пахота
Коля           Прыжок
25 май 16, 12:33    [19217264]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
Alt_Evgen,
user u JOIN work w ON u.id=w.u_id

Это же очевидно. Должно быть в подсознании
Вопрос как убрать одного Олега?
SELECT name=CASE ROW_NUMBER()OVER(PARTITION BY u.id ORDER BY w.id) WHEN 1 THEN u.name ELSE '' END, w.job
FROM user u JOIN work w ON u.id=w.u_id
ORDER BY u.id,w.id;
25 май 16, 12:34    [19217273]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
iiyama
Member

Откуда:
Сообщений: 642
Alt_Evgen,
небольшой офф
вообще-то такие вещи делаются на клиенте.
25 май 16, 12:36    [19217286]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
iap,

как то с join-а это не вытекало, но тоже логично :)
DECLARE @Table TABLE 
(
	Name VARCHAR(255),
	Work VARCHAR(255)
)

INSERT INTO @Table 
(
	Name,
	Work
)
VALUES
('Олег', 'Работа'),
('Олег', 'Пахота'),
('Олег', 'Пахота'),
('Олег', 'Пахота'),
('Олег', 'Пахота'),
('Коля', 'Прыжок')

SELECT 	
	CASE 
		WHEN LAG(Name,1,0)  OVER (PARTITION BY Name ORDER BY Name)  != Name 
		THEN Name
		ELSE ''
	END,
	Work
FROM @Table 
25 май 16, 12:38    [19217292]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
Alt_Evgen
Member

Откуда:
Сообщений: 29
iap
iap
Alt_Evgen,
user u JOIN work w ON u.id=w.u_id

Это же очевидно. Должно быть в подсознании
Вопрос как убрать одного Олега?
SELECT name=CASE ROW_NUMBER()OVER(PARTITION BY u.id ORDER BY w.id) WHEN 1 THEN u.name ELSE '' END, w.job
FROM user u JOIN work w ON u.id=w.u_id
ORDER BY u.id,w.id;

Пробую такой запрос но мне пишет:
Не закрытые кавычки в конце символьной строки
'' END, w.job FROM user u JOIN work w ON u.id=w.u_id ORDER BY u.id,w.id  ''
25 май 16, 12:44    [19217349]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Alt_Evgen
Пробую такой запрос но мне пишет
ГДЕ? где пробуешь, в смысле...
Походу у тебя какой-то клиент, который требует удвоения кавычек и воспринимает две как одну.
25 май 16, 12:46    [19217364]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Alt_Evgen
iap
пропущено...
Вопрос как убрать одного Олега?
SELECT name=CASE ROW_NUMBER()OVER(PARTITION BY u.id ORDER BY w.id) WHEN 1 THEN u.name ELSE '' END, w.job
FROM user u JOIN work w ON u.id=w.u_id
ORDER BY u.id,w.id;


Пробую такой запрос но мне пишет:
Не закрытые кавычки в конце символьной строки
'' END, w.job FROM user u JOIN work w ON u.id=w.u_id ORDER BY u.id,w.id  ''
А в конце откуда кавычки взялись? Там у меня точка с запятой.
Я, кстати, выложенный запрос у себя проверил.
25 май 16, 12:47    [19217370]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить sql запрос?  [new]
Alt_Evgen
Member

Откуда:
Сообщений: 29
iap,
Оо все получилось. Спасибо тебе большое. Да действительно в кавычках было дело перед END. Добавил еще пару апострофов и заработало!!
25 май 16, 12:54    [19217452]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить