Как передать значение столбца в качестве параметра функции?SQL Server 2005 - PullRequest
0 голосов
/ 28 декабря 2018

Я новичок здесь, так что будь осторожен со мной.Как передать значение столбца в качестве параметра функции?

У меня есть этот запрос для выбора месяцев и лет:

 SELECT 
     DATEPART(MONTH, a.RequestDate), 
     DATEPART(YEAR, a.RequestDate) 
 FROM 
     TABLE A

Образцы данных:

Months  Years 
------  -----
  5     2013
  3     2013
  1     2013
  9     2013

значения не в порядке и могут быть дубликатами.

Я хочу передать эти значения одно за другим в параметр функции автоматически:

 SELECT WeekNo 
 FROM   _GLOBALDB.dbo.fn_WeekNoListInMonth(a.Months, a.Years)

Результат покажет, какие недели будут в этомконкретный месяц.Например:

 SELECT MIN(WeekNo) 
 FROM   fn_WeekNoListInMonth(5, 2013)

Ожидаемый результат:

 WeekNO
 ------
   18
   19
   20
   21

Я пробовал это:

 SELECT MIN(WeekNo) 
 FROM fn_WeekNoListInMonth(A.Months, A.Years)

Но это показывает ошибку:

Не удалось связать идентификатор из нескольких частей «A.Months».
Не удалось связать идентификатор из нескольких частей «t.Months».

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018
;with cte as ( 
SELECT DATEPART(MONTH, RequestDate) as Months, DATEPART(YEAR, RequestDate) as Years
 FROM TABLE 
 )
SELECT WeekNO  FROM cte A 
CROSS APPLY dbo.fn_WeekNoListInMonth(month(A.Months, A.Years)
0 голосов
/ 28 декабря 2018

Вы должны иметь возможность использовать cross apply в SQL Server 2005:

SELECT . . .
FROM TABLE A CROSS APPLY
     dbo.fn_WeekNoListInMonth(month(a.RequestDate), year(a.RequestDate))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...