Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом / 9 сообщений из 9, страница 1 из 1
11.02.2021, 18:20
    #40044560
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Коллеги, подскажите, как бы вы сделали такой запрос.

Есть таблица в которой записываются записи заказа. Например, заказ состоит из трех позиций. Есть ХП, которая выборку группирует по номеру заказа и показывает в интерфейсе приложения одной строкой.

Все бы хорошо, но пользователи хотят еще видеть столбец с типами товаров, которые есть в заказе. Типов не много, 5 штук.

Например этот заказ
nomer namekolvo Price12Детская110012Плиссе 16мм1200
должна превращаться в строку
nomer Price vids12300 ДП16

А этот заказ
nomernamekolvo Price13Плиссе110013Вставная1 5013Вставная130
должна превращаться в строку
nomer Price vids13180 ПВ

Как это сделать?
...
Рейтинг: 0 / 0
11.02.2021, 18:23
    #40044563
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
ilshatkin,

а типы товаров откуда берутся?
...
Рейтинг: 0 / 0
11.02.2021, 18:31
    #40044567
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
komrad, типы товаров можно оформить дополнительной таблицей в БД.
Name snameДетская ДПлиссе 16мм П16Плиссе ПВставная В
...
Рейтинг: 0 / 0
11.02.2021, 19:14
    #40044593
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
ilshatkin
komrad, типы товаров можно оформить дополнительной таблицей в БД.
Name snameДетская ДПлиссе 16мм П16Плиссе ПВставная В


Так, осталось кляузу for xml path('') освоить.
...
Рейтинг: 0 / 0
11.02.2021, 19:47
    #40044611
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
aleks222,
Спасибо, вижу что так решают эту задачу, но у меня до этого идет группировка с GROUP BY ... HAVING

Ума не приложу, можно использовать ваш метод вместе с уже существующей группировкой?
...
Рейтинг: 0 / 0
11.02.2021, 19:49
    #40044612
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
ilshatkin,
Как вариант можно в начале ХП сформировать эту строку, положить в переменную, а потом подставить в то что сейчас выдает.
...
Рейтинг: 0 / 0
11.02.2021, 23:57
    #40044669
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
ilshatkin
Спасибо, вижу что так решают эту задачу, но у меня до этого идет группировка с GROUP BY ... HAVING

Ума не приложу, можно использовать ваш метод вместе с уже существующей группировкой?
а что за сервер-то ?
string_agg не спасёт "отца русской демократии" ? )
...
Рейтинг: 0 / 0
12.02.2021, 00:23
    #40044676
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
court,
сервер 2012, поэтому string_agg не спасет "отца русской демократии"((
...
Рейтинг: 0 / 0
12.02.2021, 00:55
    #40044678
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Сделал по подсказке aleks222
выкладываю полную ХП, может кому будет полезным.

Если в ХП есть явные огрехи, покритикуйте, пожалуйста

Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
SELECT 
	    urLica.name,                      
		urLica.idUrllico, 
		kontakt.nameKontakt,		
		kontakt.idKontakt,		
		kontakt.adresKontakt,		
		kontakt.telefonKontakt,		
		kontakt.other1Kontakt,		
		kontakt.other2Kontakt,		
		users.name AS polzovatel,  
		vib.tip,
		vib.vid, 
		vib.nomerStr, 
		vib.nomer, 
		vib.data, 
		vib.dataDo, 
		vib.summa, 
		vib.summaOpl, 
		vib.komment,
		vib.nomerVhod, 
		vib.vidVhod,  
		vib.proekt,
		vib.so, 
		vib.po, 		
		vib.Percentage, 
		vib.valuta, 
		vib.flag, 
		vib.flag1, 
		vib.driver,
		vib.driverTel,
		vib.driverKoment,
		vib.driverAuto,
		vib.driverRegNom,
		vib.dopInfo                  

	FROM 
	
	(SELECT  
		v.vid, 
		v.nomerStr, 
		v.nomer, 
		v.data, 
		v.dataDo, 
		SUM(v.summa / 100 * (100 - ISNULL(shemaProdaj.procent, 0))) AS summa, 
		v.summaOpl, 
		CAST(v.komment as varchar(4000)) AS komment,
		v.nomerVhod, 
		v.vidVhod,  
		v.proekt,
		v.so, 
		v.po, 		
		0 AS Percentage, 
		v.valuta, 
		v.flag, 
		v.flag1, 
		v.driver,
		v.driverTel,
		v.driverKoment,
		v.driverAuto,
		v.driverRegNom,
		v.dopInfo,
		v.kontragent,
		v.userID,
		v.kontakt,
		(SELECT distinct ''+strukturaTovara.snameZvena 
                 FROM  viborkaTovara AS v2     
			 INNER JOIN tovar ON tovar.idTovar=v2.tovar
				 INNER JOIN strukturaTovara  ON strukturaTovara.idZvena = tovar.vStrukture
                 WHERE v.nomer = v2.nomer
                 FOR XML PATH ('')) as tip                                            
	                            
	FROM         viborkaTovara AS v    
              LEFT OUTER JOIN shemaProdaj ON v.shema =shemaProdaj.idShema
	WHERE v.sklad = @idSklad
	
	GROUP BY v.vid,
		v.nomerStr, 
		v.nomer, 
		v.summaOpl, 
		v.data, 
		CONVERT(varchar(4000), v.komment), 
		v.dataDo,		
		v.nomerVhod, 
		v.vidVhod, 		 
		v.proekt,
		v.so, 
		v.po,
		v.valuta, 
		v.flag, 
		v.flag1, 
		v.driver,
		v.driverTel,
		v.driverKoment,
		v.driverAuto,
		v.driverRegNom,
		v.dopInfo,
		v.vid,
		v.del,
		v.kontragent,
		v.userID,
		v.kontakt
		HAVING (v.vid = @vid) AND (v.del = 0)  AND (SUM(v.kolvo) > SUM(v.aktualnost))  AND ((v.kontragent = @idKontr) OR (@idKontr=-1))) as vib 
		INNER JOIN urLica ON vib.kontragent = urLica.idUrllico  
                          INNER JOIN [dbo].[sotrudniki] AS users ON vib.userID = users.id LEFT OUTER JOIN kontakt	ON vib.kontakt = kontakt.idKontakt
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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