【发布时间】:2015-02-09 08:39:04
【问题描述】:
我需要有关动态 sql 查询的帮助。 现在,我的查询是这样的
declare @query nvarchar(MAX), @preSubQuery nvarchar(200), @subQueryTxt nvarchar(500), @postSubQuery nvarchar(100);
set @postSubQuery = N' ELSE 0 END))'
set @preSubQuery = N' ,SUM(( CASE DATEDIFF(WEEK, pay.dateCreate, back.dateCreate) WHEN ';
set @subQueryTxt = N' THEN
CASE
WHEN ...
THEN 0
WHEN ...
THEN ...
ELSE
CASE
WHEN ...
THEN ...
WHEN ...
THEN ...
ELSE 0
END
END ';
select @query = N'select DATEPART(ISO_WEEK, pay.dateCreate) backWeek ,SUM(pay_and_back.PayActualPrincipalAmt) AS TotalAmount' +
+ N' @preSubQuery' + N' 0' + ' @subQueryTxt' + ' @postSubQuery'
+ N' @preSubQuery' + N' 1' + ' @subQueryTxt' + ' @postSubQuery'
+ N' @preSubQuery' + N' 2' + ' @subQueryTxt' + ' @postSubQuery'
....
+ N' @preSubQuery' + N' 12' + ' @subQueryTxt' + ' @postSubQuery'
select @query = @query + N'
from FinDocPayToPayback pay_and_back
left join FinDocument pay on pay.id = pay_and_back.PayID
left join FinDocument back on back.id = pay_and_back.PaybackID
group by DATEPART(ISO_WEEK, pay.dateCreate) order by 1';
select @query
EXECUTE sp_executesql @query
,N'@preSubQuery nvarchar(200)', @preSubQuery
,N'@subQueryTxt nvarchar(500)', @subQueryTxt
,N'@postSubQuery nvarchar(100)', @postSubQuery;
但我收到错误 Incorrect syntax。首先,我需要有关此查询的帮助。第二,
谁能提供更多关于如何构建复杂动态查询的信息?
【问题讨论】:
-
您在选择声明的值时缺少
,。就像这个+ N' @preSubQuery' + N' 0' + ' @subQueryTxt' + ' @postSubQuery' -
但我在“@postSubQuery”中添加了逗号
标签: sql tsql stored-procedures dynamic-sql