SQLSERVER⽤sql语句将⼀列数据拼接成⼀个字符串和⾏转列执⾏
SELECT userid FROM userinfo
得到
1
2
3
4
如果要得到
1,2,3,4
执⾏⽅案1
DECLARE @STR VARCHAR(8000)
SELECT @STR=ISNULL(@STR+',','')+userid FROM (SELECT DISTINCT userid FROM userinfo)AS T
SELECT @STR
sql 字符串转数组执⾏⽅案2
declare @output varchar(8000)
select @output = coalesce(@output + ',' , '') + userid from userinfo
print @output
------------------------------------------------------------------------------------------------------------------------
select *,datediff(day,要求交图⽇期,⽣产技术确认⽇期) as 拖期天数 from
(
select a.Filename,v.VariableName,vv.ValueText
from Vw_VariableValueNew as vv
left join Documents as a on vv.DocumentID = a.DocumentID
left join Variable as v on v.VariableID = vv.VariableID and
v.VariableName in(N'制造编号',N'机名',N'客户',N'图纸代号',N'图纸名称',N'版本',N'负责⼈',N'要求交图⽇期',N'制图⼈',N'实际出图⽇期',N'交图确认⼈',N'交图确认⽇期',N'⽣产技术确认⼈',N'⽣产技术确认⽇期',N'⽣产管理确认⼈',N'⽣产管理确认⽇期')
where vv.DocumentID = 4051 and vv.ConfigurationID = 2 --and vv.RevisionNo = 1
) as hzl
PIVOT
(
max(hzl.ValueText)
FOR hzl.VariableName in([制造编号],[机名],[客户],[图纸代号],[图纸名称],[版本],[负责⼈],[要求交图⽇期],[制图⼈],[实际出图⽇期],[交图确认⼈], [交图确认⽇期],[⽣产技术确认⼈],[⽣产技术确认⽇期],[⽣产管理确认⼈],[⽣产管理确认⽇期])
) as t
where ⽣产技术确认⽇期 between REPLACE('2015-04-01','/','-') and REPLACE('2015-04-29','/','-') ;
总报错"'PIVOT' 附近有语法错误。您可能需要将当前数据库的兼容级别设置为更⾼的值,以启⽤此功能"
遇到这个错误,执⾏如下过程,将myDatabaseName替换成⽬标数据库即可
exec sp_dbcmptlevel myDatabaseName,90
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论