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

Откуда:
Сообщений: 13
Приветствую! Очень нужна ваша помощь, форумчане.

Есть запрос с параметром

SELECT
  card_number
,count(card_number) as mycount
FROM
  transaction where 
  card_number in (@param) 
 group by card_number

параметр вводится как 23,44,11

При выполнении запроса данных нет, по ходу потому что параметр подставляется как '23,44,11'.
Как это побороть?
9 дек 14, 11:28    [16970837]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
lexmove,
dsql... или смотрите faq по форуму,разбералось 2к раз
9 дек 14, 11:29    [16970846]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
lexmove,

зачем называете таблицу ключевым словом? Фантазии не хватает?
SELECT card_number, COUNT(card_number) AS mycount
FROM [transaction]
WHERE ','+@param+',' LIKE '%,'+CAST(card_number AS VARCHAR)+',%'
GROUP BY card_number;
Про индексы можно забыть.
Другой путь - распарсить @param в таблицу.
Но зачем формировать строку параметров, чтобы потом распарсивать её обратно?
Почему сразу не формировать таблицу значений?
9 дек 14, 11:37    [16970892]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
lexmove
Member

Откуда:
Сообщений: 13
iap, спасибо за отклик.
Но вышеприведенное не работает как надо (данные не появляются)

автор
Но зачем формировать строку параметров, чтобы потом распарсивать её обратно?
Почему сразу не формировать таблицу значений?

Предполагается, что данные параметр будет вводить пользователь в приложении
9 дек 14, 11:48    [16970961]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
lexmove
iap, спасибо за отклик.
Но вышеприведенное не работает как надо (данные не появляются)


что-то вы батенька привираете

declare @t table (id int)
insert into @t values(1),(2),(3),(4)

declare @param varchar(100)
set @param = '2,3'

SELECT id, COUNT(id) AS mycount
FROM @t
WHERE ','+@param+',' LIKE '%,'+CAST(id AS VARCHAR)+',%'
GROUP BY id
9 дек 14, 11:52    [16970976]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
lexmove
Member

Откуда:
Сообщений: 13
автор
что-то вы батенька привираете

И то верно, это я реально тупанул, извиняюсь...
автор
Про индексы можно забыть.
Другой путь - распарсить @param в таблицу.

А можно об этом поподробнее
9 дек 14, 11:58    [16971024]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
lexmove
Другой путь - распарсить @param в таблицу.
А можно об этом поподробнее


declare @t table (id int)
insert into @t values(1),(2),(3),(4)

declare @param varchar(100)
set @param = '2,3'


if OBJECT_ID('tempdb..#paramtable') is not null drop table #paramtable
create table #paramtable (id int);
set @param = replace(@param,',',' union select ') 
exec('insert into #paramtable(id) select '+@param)

SELECT t.id, COUNT(t.id) AS mycount
FROM @t t
join #paramtable p on p.id=t.id
GROUP BY t.id
9 дек 14, 12:09    [16971147]     Ответить | Цитировать Сообщить модератору
 Re: rdl отчет с параметром - преобразование строки в массив чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
Учитесь использовать хелп продукта
http://technet.microsoft.com/en-us/library/aa337396(v=sql.105).aspx
9 дек 14, 12:15    [16971198]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить