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

Откуда:
Сообщений: 162
Надо пройти по таблице и сделать строку из ID. Написал запрос. Если пытаюсь подставить ps.id говорит недопустимое имя. Без sp неоднозначность. Как быть?
		SELECT
		  STUFF(CAST((
			  SELECT [text()] = ';' + [ID]
			    FROM SPECIAL_PROCESSING sp
			      INNER JOIN CONTAINER_SPEC_PROC_LNK cspl ON cspl.container_id = 6978
			   WHERE sp.id = cspl.special_processing_id
			  ORDER BY sp.id
    FOR XML PATH(''), TYPE) AS VARCHAR(100)), 1, 1, '')
25 авг 16, 14:05    [19589362]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
sergeimv
Member

Откуда: Россия, г.Казань
Сообщений: 42
declare @str varchar(255)
select @str = concat(@str,';',t.id) from (values (1),(2),(3)) t(id)
select stuff(@str,1,1,'')
25 авг 16, 14:24    [19589467]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
ErikI
Надо пройти по таблице и сделать строку из ID. Написал запрос. Если пытаюсь подставить ps.id говорит недопустимое имя. Без sp неоднозначность. Как быть?


ну, вы уж как-то определитесь: ps или sp.
25 авг 16, 14:27    [19589491]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
ErikI
Member

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

Все отлично, кроме того что мне не нужна переменная! Это SUB Query который участвует в дальнейших запросах.
25 авг 16, 15:07    [19589790]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
ErikI
Если пытаюсь подставить ps.id говорит недопустимое имя.
Вы скопируйте запрос с ошибкой, и саму ошибку. Полностью, не в пересказе.
25 авг 16, 16:12    [19590248]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 113
Не знаю как Вы там "sp" подставляли, но у меня ваш запрос в таком виде работает (без cast даёт ошибку преобразования ";" к типу int):

;WITH SPECIAL_PROCESSING (id)
AS
(
    SELECT 10
    UNION ALL
    SELECT 20
)
,CONTAINER_SPEC_PROC_LNK (id, special_processing_id, container_id)
AS
(
    SELECT 1, 10, 6978
    UNION ALL
    SELECT 2, 20, 6978
    UNION ALL
    SELECT 3, 30, 6978
)
		SELECT
		  STUFF(CAST((
			  SELECT [text()] = ';' + CAST(sp.[ID] AS nvarchar(100))
			    FROM SPECIAL_PROCESSING sp
			      INNER JOIN CONTAINER_SPEC_PROC_LNK cspl ON cspl.container_id = 6978
			   WHERE sp.id = cspl.special_processing_id
			  ORDER BY sp.id
    FOR XML PATH(''), TYPE) AS VARCHAR(100)), 1, 1, '')
25 авг 16, 16:30    [19590370]     Ответить | Цитировать Сообщить модератору
 Re: Агриригируемая строка  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
Sybex
Не знаю как Вы там "sp" подставляли
Наверняка [sp.ID] :-)
26 авг 16, 09:40    [19592879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить