22,207
社区成员
发帖
与我相关
我的任务
分享
Err] 42000 - [SQL Server]必须声明标量变量 "@str1"。
42000 - [SQL Server]“t”附近有语法错误。
42000 - [SQL Server]必须声明标量变量 "@str"。
42000 - [SQL Server]必须声明标量变量 "@str"。
Err] 42000 - [SQL Server]必须声明标量变量 "@str1"。
42000 - [SQL Server]“t”附近有语法错误。
42000 - [SQL Server]必须声明标量变量 "@str"。
42000 - [SQL Server]必须声明标量变量 "@str"。
[/quote]
用的是ssms吗?声明变量了吗?--测试数据
if not object_id(N'T') is null
drop table T
Go
Create table T([a] nvarchar(26),[b] nvarchar(24))
Insert T
select N'大智街办事处',N'保成社区' union all
select N'大智街办事处',N'泰宁社区' union all
select N'一元街办事处',N'岳飞社区' union all
select N'一元街办事处',N'同兴社区' union all
select N'一元街办事处',N'三阳社区'
Go
--测试数据结束
DECLARE @str NVARCHAR(max)=';WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY a ORDER BY b) AS num FROM T
)
SELECT *
FROM cte PIVOT
( MAX([b]) FOR [num] IN ('
DECLARE @str1 NVARCHAR(max)=''
;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY a ORDER BY b) AS num FROM T
)
SELECT @str1=@str1+',['+RTRIM(num)+']' FROM (SELECT DISTINCT num FROM cte)t
SET @str=@str+ STUFF(@str1,1,1,'')+') ) AS s'
EXEC(@str)
--测试数据
if not object_id(N'T') is null
drop table T
Go
Create table T([a] nvarchar(26),[b] nvarchar(24),[type] INT)
Insert T
select N'大智街办事处',N'保成社区',1 union all
select N'大智街办事处',N'泰宁社区',2 union all
select N'一元街办事处',N'岳飞社区',1 union all
select N'一元街办事处',N'同兴社区',2 union all
select N'一元街办事处',N'三阳社区',3
Go
--测试数据结束
SELECT *
FROM T PIVOT
( MAX([b]) FOR [type] IN ( [1], [2], [3] ) )
AS s
是这样吗?