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

Откуда:
Сообщений: 24
IF @report_name = N'Selection_piece'
BEGIN
SET @main_recip = 'e_fedotova@hclass.ru'
--SET @copy_recip = 'v_didenko@hclass.ru'

SET @letter_sub = N'Штучный отбор товаров на РЦ'

SET @letter_body = N'<p>Доброе утро.</p>
<p>Список штучных товаров, которые находятся в нештучной зоне размещения</p>' +
N'<table border="1" cellspacing="0" cellpadding="2">' +
N'<tr>
<th>Зона размещения</th>
<th>Код товара</th>
<th>Наименование товара</th>
<th>Наличие товара</th>
</tr>' +
cast( (
select td=mi.ITEM_CATEGORY9, '',
td=rms.ITEM,'',
td=mi.DESCRIPTION,'',
case when sum(ON_HAND_QTY)>0 then 1 else 0 end,''
from OPENQUERY (RMSP, 'select c.item, C.UDA_ID, uda_desc, d.uda_value, d.uda_value_desc
from uda_item_lov c
left join UDA dd on dd.uda_id=c.uda_id
left join UDA_VALUES d on d.uda_value=c.uda_value and d.uda_id=c.uda_id
where c.Uda_id in (9201) and d.uda_value=1 ') as RMS
LEFT JOIN Manh_LOCATION_INVENTORY as mli on rms.ITEM=mli.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN RMS_ITEM_MASTER_CLASSIFIER as rimc on rms.ITEM=rimc.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN Manh_ITEM as mi on rms.ITEM=mi.ITEM COLLATE Cyrillic_General_CI_AS
WHERE mli.DC=600 and warehouse='WH1' and GROUP_NO<>49 and mi.ITEM_CATEGORY9 not like N'%Штучные%'
GROUP BY rms.ITEM, mi.DESCRIPTION, ITEM_CATEGORY9
) AS NVARCHAR(MAX) ) +
N'</table>' +
N'<p>Письмо сгенерировано автоматически, ' + convert(nvarchar, getdate(), 104) + ' ' + convert(nvarchar, getdate(), 108) + N'.</p>';

END;

Возникает ошибка:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

Может быть кто-то сталкивался с такой ошибкой и знает в чем проблема.
5 май 17, 08:41    [20458987]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
Что, трудно код завернуть в тег SRC? ну ни фига ж не видать!

ВалькирияН
Возникает ошибка:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Может быть кто-то сталкивался с такой ошибкой и знает в чем проблема.

А перевести не пробовали?
Функция CAST() принимает ТОЛЬКО СКАЛЯРНОЕ ЗНАЧЕНИЕ! А Вы пытаетесь ей скормить выборку из 8 полей и хрен знает скольких записей - вот она и возмущается.
5 май 17, 08:53    [20459063]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
ВалькирияН
Member

Откуда:
Сообщений: 24
Хорошо, спасибо, я новичок, первый раз работаю с функцией Cast, скажите какой функцией его можно заменить?
5 май 17, 09:29    [20459252]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
ВалькирияН
Хорошо, спасибо, я новичок, первый раз работаю с функцией Cast, скажите какой функцией его можно заменить?

не нужно ничего заменять.
тебе нужно в подзапросе в конце добавить FOR XML PATH( '' )
[sql]
IF @report_name = N'Selection_piece'
BEGIN
SET @main_recip = 'e_fedotova@hclass.ru'
--SET @copy_recip = 'v_didenko@hclass.ru'

SET @letter_sub = N'Штучный отбор товаров на РЦ'

SET @letter_body = N'<p>Доброе утро.</p>
<p>Список штучных товаров, которые находятся в нештучной зоне размещения</p>' +
N'<table border="1" cellspacing="0" cellpadding="2">' +
N'<tr>
<th>Зона размещения</th>
<th>Код товара</th>
<th>Наименование товара</th>
<th>Наличие товара</th>
</tr>' +
cast( (
select td=mi.ITEM_CATEGORY9, '',
td=rms.ITEM,'',
td=mi.DESCRIPTION,'',
case when sum(ON_HAND_QTY)>0 then 1 else 0 end,''
from OPENQUERY (RMSP, 'select c.item, C.UDA_ID, uda_desc, d.uda_value, d.uda_value_desc
from uda_item_lov c
left join UDA dd on dd.uda_id=c.uda_id
left join UDA_VALUES d on d.uda_value=c.uda_value and d.uda_id=c.uda_id
where c.Uda_id in (9201) and d.uda_value=1 ') as RMS
LEFT JOIN Manh_LOCATION_INVENTORY as mli on rms.ITEM=mli.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN RMS_ITEM_MASTER_CLASSIFIER as rimc on rms.ITEM=rimc.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN Manh_ITEM as mi on rms.ITEM=mi.ITEM COLLATE Cyrillic_General_CI_AS
WHERE mli.DC=600 and warehouse='WH1' and GROUP_NO<>49 and mi.ITEM_CATEGORY9 not like N'%Штучные%'
GROUP BY rms.ITEM, mi.DESCRIPTION, ITEM_CATEGORY9
FOR XML PATH( '' )
) AS NVARCHAR(MAX) ) +
N'</table>' +
N'<p>Письмо сгенерировано автоматически, ' + convert(nvarchar, getdate(), 104) + ' ' + convert(nvarchar, getdate(), 108) + N'.</p>';

END;
[/sql]
5 май 17, 09:37    [20459294]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
эх, облажался с src...
IF @report_name = N'Selection_piece' 
BEGIN 
SET @main_recip = 'e_fedotova@hclass.ru'
--SET @copy_recip = 'v_didenko@hclass.ru'

SET @letter_sub = N'Штучный отбор товаров на РЦ'

SET @letter_body = N'<p>Доброе утро.</p>
<p>Список штучных товаров, которые находятся в нештучной зоне размещения</p>' +
N'<table border="1" cellspacing="0" cellpadding="2">' +
N'<tr>
<th>Зона размещения</th>
<th>Код товара</th>
<th>Наименование товара</th>
<th>Наличие товара</th>
</tr>' +
cast( ( 
select td=mi.ITEM_CATEGORY9, '', 
td=rms.ITEM,'',
td=mi.DESCRIPTION,'',
case when sum(ON_HAND_QTY)>0 then 1 else 0 end,''
from OPENQUERY (RMSP, 'select c.item, C.UDA_ID, uda_desc, d.uda_value, d.uda_value_desc
from uda_item_lov c
left join UDA dd on dd.uda_id=c.uda_id
left join UDA_VALUES d on d.uda_value=c.uda_value and d.uda_id=c.uda_id
where c.Uda_id in (9201) and d.uda_value=1 ') as RMS
LEFT JOIN Manh_LOCATION_INVENTORY as mli on rms.ITEM=mli.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN RMS_ITEM_MASTER_CLASSIFIER as rimc on rms.ITEM=rimc.ITEM COLLATE Cyrillic_General_CI_AS
LEFT JOIN Manh_ITEM as mi on rms.ITEM=mi.ITEM COLLATE Cyrillic_General_CI_AS
WHERE mli.DC=600 and warehouse='WH1' and GROUP_NO<>49 and mi.ITEM_CATEGORY9 not like N'%Штучные%'
GROUP BY rms.ITEM, mi.DESCRIPTION, ITEM_CATEGORY9
[b]FOR XML PATH( '' )[/b]
) AS NVARCHAR(MAX) ) +
N'</table>' +
N'<p>Письмо сгенерировано автоматически, ' + convert(nvarchar, getdate(), 104) + ' ' + convert(nvarchar, getdate(), 108) + N'.</p>';

END;
5 май 17, 09:39    [20459302]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
ВалькирияН
Member

Откуда:
Сообщений: 24
Руслан Дамирович, спасибо огромное^^
5 май 17, 09:41    [20459316]     Ответить | Цитировать Сообщить модератору
 Re: При создании автоматического письма, возникает ошибка  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
ВалькирияН
Руслан Дамирович, спасибо огромное^^

не за что
на будущее - старайтесь выкидывать не относящиеся к проблеме информацию и код
SET @main_recip = 'e_fedotova@hclass.ru' --< я знаю, где ты работаешь, тебе конец!
--SET @copy_recip = 'v_didenko@hclass.ru' --< бесполезный комментарий
SET @letter_sub = N'Штучный отбор товаров на РЦ' --< нехорошо выдавать (не)коммерческую тайну

Мне неясно наличие в подзапросе выборки пустых строк
select td=mi.ITEM_CATEGORY9, '', <- зачем?
5 май 17, 09:51    [20459361]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить