У меня есть таблица под названием report
с 3-мя столбцами:Проблема с входными параметрами и типами данных в SQL Server
reportdate date, name varchar(10), location varchar(10)
Sample данные:
reportdate name location
-------------------------------
2014-01-01 sachin vizag
2014-02-02 tendulkar vizag
2014-03-03 ram vizag
2014-04-04 robert vizag
2014-05-05 rahim vizag
2014-06-06 king vizag
2013-01-01 sachin vizag
2013-02-02 tendulkar vizag
2013-03-03 ram vizag
2013-04-04 robert vizag
2013-05-05 rahim vizag
2013-06-06 king vizag
Мой фактическое требование было создайте параметр даты для отчетов SSRS. Поэтому для этой цели я взял столбец reportdate
.
Мне нужно создать 3 параметр из одного reportdate
колонок
Параметр 1:
мне нужно выбрать только значение года из reportdate
колонки, для которой я использовал этот запрос
select distinct YEAR(ReportDate) as ReportYear
from report
и результатом этого было
ReportYear
----------
2013
2014
Параметр 2:
Мне нужно создать параметр в течение нескольких месяцев колонку и это хранимая процедура, которую я создал
create procedure months
@years date
as begin
select distinct
Case
When CONVERT(varchar(2), ReportDate, 101) = 01 Then 'JAN'
When CONVERT(varchar(2), ReportDate, 101) = 02 Then 'FEB'
When CONVERT(varchar(2), ReportDate, 101) = 03 Then 'MAR'
When CONVERT(varchar(2), ReportDate, 101) = 04 Then 'APR'
When CONVERT(varchar(2), ReportDate, 101) = 05 Then 'MAY'
When CONVERT(varchar(2), ReportDate, 101) = 06 Then 'JUN'
When CONVERT(varchar(2), ReportDate, 101) = 07 Then 'JUL'
When CONVERT(varchar(2), ReportDate, 101) = 08 Then 'AUG'
When CONVERT(varchar(2), ReportDate, 101) = 09 Then 'SEP'
When CONVERT(varchar(2), ReportDate, 101) = 10 Then 'OCT'
When CONVERT(varchar(2), ReportDate, 101) = 11 Then 'NOV'
When CONVERT(varchar(2), ReportDate, 101) = 12 Then 'DEC'
end ReportMonth
--,year(reportdate) As ReportYear
from
report
where
reportdate in (select CAST(cast(@years as datetime)as date))
--order by DATEPART(m,ReportMonth)
end
Я передаю лет в качестве параметра в описанной выше процедуре, если Я передаю значение 2013/2014
в качестве параметра, то мой выход должен быть, как показано ниже
ReportMonth ReportYear
-----------------------
JAN 2014
FEB 2014
MAR 2014
APR 2014
MAY 2014
JUN 2014
JAN 2013
FEB 2013
MAR 2013
APR 2013
MAY 2013
JUN 2013
вместо выше выход я получаю быть низкий выход, если я запускаю выше хранимую процедуру на год 2013.
ReportMonth ReportYear
------------------------
JAN 2013
Я не понимаю, почему только один месяц заселяется вместо всех доступных месяцев в таблице.
Каков набор возможных параметров, которые вы хотите передать процессу? Это '2013',' 2013/2014', '2013/2014/2015' или это всегда два года в формате' 2013/2014'? – jpw
@jpw: это зависит от данных в моей таблице, если у меня есть данные за один год, то только 1 год, если у меня есть n количество лет в течение всех лет. – 0537