mssql中pivot表的设计
我正在尝试开发透视表,但无法获得所需的结果。请参阅所需输出的附加图像。我无法为所需的解决方案设计pivot查询 这是我的sql查询::mssql中pivot表的设计,sql,asp.net,sql-server,pivot,Sql,Asp.net,Sql Server,Pivot,我正在尝试开发透视表,但无法获得所需的结果。请参阅所需输出的附加图像。我无法为所需的解决方案设计pivot查询 这是我的sql查询:: select b.SchoolName, c.KaryakramName, a.NikashaAmount from TBL_NIKASHA a inner join TBL_SCHOOL b on b.SchoolId = a.SchoolId inner join TBL_KARYAKRAM c on a.KaryakramId =
select
b.SchoolName,
c.KaryakramName,
a.NikashaAmount
from TBL_NIKASHA a
inner join TBL_SCHOOL b on b.SchoolId = a.SchoolId
inner join TBL_KARYAKRAM c on a.KaryakramId = c.KaryakramId
WHERE
a.NikashaType = 1 and c.karyakramType = 1
order by a.SchoolId;
这里,NikashaType和karyakramType来自用户
我必须在透视表中显示此查询的结果。到目前为止我所做的:
declare
@columns nvarchar(max) = '',
@sql nvarchar(max) = '';
select
@columns += QUOTENAME(c.KaryakramName) + ','
from TBL_NIKASHA a
inner join TBL_SCHOOL b on b.SchoolId = a.SchoolId
inner join TBL_KARYAKRAM c on a.KaryakramId = c.KaryakramId
WHERE
a.NikashaType = 1 and c.karyakramType = 1
SET @columns = left(@columns, len(@columns)-1);
set @sql = '
select * from
(
select c.KaryakramName
from TBL_NIKASHA a
inner join TBL_SCHOOL b on b.SchoolId = a.SchoolId
inner join TBL_KARYAKRAM c on a.KaryakramId = c.KaryakramId
WHERE
a.NikashaType = 1 and c.karyakramType = 1
order by a.SchoolId
) t
pivot
(
a.NikashaAmount,
for c.KaryakramName in ('+ @columns+')
) as pivot_table
';
execute sp_execute @sql;
我得到的错误是:过程需要类型为“int”的参数“@handle”。
sp\u executesql
不是sp\u executes
。另外注意,使用+=
进行字符串聚合是不明智的。对于XML路径解决方案,请使用STRING\u AGG
或较旧的。@Larnu获取错误过程或函数“sp\u execute”需要未提供的参数“@handle”。
<代码>sp_执行SQL
。。。不执行。。。停止尝试使用sp_execute,它是错误的对象,