次のようなsprocがあります。
ALTER PROCEDURE [dbo].[GetProjectPaymentSchedules]
@StartDate datetime
AS
BEGIN
IF @StartDate IS NULL
BEGIN
SET @StartDate = DateAdd(YY, -100, GetDate())
END
-- create our variables
DECLARE
@query VARCHAR(max),
@years VARCHAR(2000)
SELECT @years = STUFF((SELECT ISNULL(
(SELECT *
FROM
(SELECT DISTINCT '],[' + ltrim(Cast(PaymentDueDate as varchar(50))) As TheDate
FROM PaymentSchedule
WHERE PaymentDueDate > @StartDate
Union all
Select DISTINCT '],[' + ltrim(Cast(DateIncurred as varchar(50))) As TheDate
FROM Expense
WHERE DateIncurred > @StartDate
) Sub
ORDER BY ('],[' + ltrim(Cast(TheDate as varchar(50))))
FOR XML PATH('')), 0)),1, 2, '') + ']'
SET @query =
'SELECT *
FROM
(
(select p.Project_Desc, s.Scope_ID, ps.PaymentDueDate, ps.PaymentAmount
from Project p
join dbo.Scope s
ON s.Project_ID = p.Project_Id
join dbo.PaymentSchedule ps
ON ps.Scope_ID = s.Scope_ID)
UNION ALL
(select ec.CategoryDesc AS Category, s.Scope_ID AS Scope, e.DateIncurred, e.ExpAmount
from Expense e
join dbo.ExpenseCategory ec
on e.ExpCategory = ec.CategoryId
join Scope s
on (e.ScopeId = s.Scope_ID or e.ScopeId IS Null) )
)t
PIVOT (SUM(PaymentAmount) FOR PaymentDueDate
IN ('+@years+')) AS pvt
order by pvt.Scope_ID'
EXECUTE (@query)
END
作成/変更は問題ありませんが、実行しようとすると次のようになります。
exec dbo.AMEP_GetProjectPaymentSchedules '07-16-2012'
exec dbo.AMEP_GetProjectPaymentSchedules NULL
どちらも次の結果になります。
メッセージ 102、レベル 15、状態 1、行 24
'>' 付近の構文が正しくありません。
メッセージ 102、レベル 15、状態 1、行 24
'>' 付近の構文が正しくありません。
何がエラーを投げているのか理解できないようです
どんな助けでも大歓迎です