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

Откуда:
Сообщений: 6
Добрый день уважаемые программисты,

Как составить запрос правильно!

SELECT inputdata, 'Красивые номера', SUM(price) FROM numbers WHERE subdiller_id='1026' group by inputdata union
select data, ('накл №' + nakl +'/' +comment)as comments, price from main_report WHERE subdiller_id='1026' union
select MAX(data), s.service_name, SUM(ms.price) FROM main_service ms, service s WHERE subdiller_id='1026' and ms.service_id = s.service_id group by s.service_name


А результат такой....

Дата           Примечание	                                                         Сумма
2014-03-20 	1_М1000	                                                                  50
2014-03-22 	Красивые номера	                                                          58
2014-03-22 	2_М2000	                                                                  20
2014-03-22 	3_М3000	                                                                  30
2014-03-22	накл №1/900/20шт сомн*5 сом+33 шт млт*3,2	                          200
2014-03-22 	накл №2/900/ачсядортпивыап*5чвморьти*имбоь,2653                           100



А мне нужно такой результат

Дата           Примечание	                                                         Сумма
2014-03-20 	1_М1000, 2_М2000, 3_М3000	                                          100
2014-03-22 	Красивые номера	                                                          58
2014-03-22	накл №1/900/20шт сомн*5 сом+33 шт млт*3,2	                          200
2014-03-22 	накл №2/900/ачсядортпивыап*5чвморьти*имбоь,2653                           100


Это тетя строка sql запроса имя поля s.service_name

Заранее спасибо!
23 мар 14, 16:48    [15773677]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
_human
Member

Откуда:
Сообщений: 560
ТимурМ,

навскидку
24 мар 14, 00:56    [15774985]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
что-то из этой оперы наверно нужно,чтоб подменить последнее слагаемое в union



select MAX(data),
( SELECT ',' + s1.service_name
FROM main_service ms1, service s1
WHERE ms1.service_id = s1.service_id and ms1.subdiller_id=ms1.subdiller_id
FOR XML PATH ( '' )
, TYPE).value('.', 'NVARCHAR(MAX)') list_service,
SUM(ms.price)
FROM main_service ms, service s
WHERE ms.subdiller_id='1026' and ms.service_id = s.service_id
group by ms.subdiller_id
24 мар 14, 08:14    [15775272]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
ТимурМ
Member

Откуда:
Сообщений: 6
west74,

Спасибо огромное, можно еще один вопрос, а как сделать чтоб получить такой результат

Дата           Примечание	                                                         Сумма
2014-03-20 	1_М1000(1), 2_М2000(2), 3_М3000(1)	                                 100
2014-03-22 	Красивые номера	                                                          58
2014-03-22	накл №1/900/20шт сомн*5 сом+33 шт млт*3,2	                          200
2014-03-22 	накл №2/900/ачсядортпивыап*5чвморьти*имбоь,2653                           100


Если поле 1_М1000 2 то в скобках показать 2 а если 3 то показать 3....Будьте любезны подскажите как составить запрос....

Заранее спасибо!!!
24 мар 14, 10:04    [15775614]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
поиск рулит

select MAX(data),
stuff( ( SELECT ',' + s1.service_name+' ('+cast(ROW_NUMBER() OVER (ORDER BY [s1.service_name]) as varchar(20))+')'
FROM main_service ms1, service s1
WHERE ms1.service_id = s1.service_id and ms1.subdiller_id=ms1.subdiller_id
FOR XML PATH ( '' )
, TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'') list_service,
SUM(ms.price)
FROM main_service ms, service s
WHERE subdiller_id='1026' and ms.service_id = s.service_id
group by subdiller_id
24 мар 14, 12:55    [15776663]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
хотя нет,
не понятна зависимость s1.service_name от того что должно быть в скобках
24 мар 14, 12:58    [15776692]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
так что-ли нада?

select MAX(data),
stuff( ( SELECT ',' + s1.service_name+' ('+cast(count() as varchar(20))+')'
FROM main_service ms1, service s1
WHERE ms1.service_id = s1.service_id and ms1.subdiller_id=ms1.subdiller_id
group by s1.service_name
FOR XML PATH ( '' )
, TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'') list_service,
SUM(ms.price)
FROM main_service ms, service s
WHERE subdiller_id='1026' and ms.service_id = s.service_id
group by subdiller_id
24 мар 14, 13:01    [15776715]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос................(SELECT)  [new]
ТимурМ
Member

Откуда:
Сообщений: 6
west74,

Спасибо огромное!!!!
24 мар 14, 17:12    [15779056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить