Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 没有桌子的枢轴?_Sql Server_Reporting Services - Fatal编程技术网

Sql server 没有桌子的枢轴?

Sql server 没有桌子的枢轴?,sql-server,reporting-services,Sql Server,Reporting Services,我目前正在处理一组由SSRS传递到查询中的值。在这种情况下,这是一个不确定的年份数。例如,该值可能是“2014”、“2015”和“2016”,也可能只是“2016”或任何此类变化 我想做一些类似PIVOT的事情,在这里我可以创建一个表,在一列中包含所有年份,这样我就可以交叉连接每个月的另一个表,以获得一个年/月列表 你知道我该怎么开始吗?我想你需要一个拆分字符串的函数。 例如: 1.字符串 DECLARE @para VARCHAR(max) SET @para='''2015'',''2016

我目前正在处理一组由SSRS传递到查询中的值。在这种情况下,这是一个不确定的年份数。例如,该值可能是“2014”、“2015”和“2016”,也可能只是“2016”或任何此类变化

我想做一些类似PIVOT的事情,在这里我可以创建一个表,在一列中包含所有年份,这样我就可以交叉连接每个月的另一个表,以获得一个年/月列表


你知道我该怎么开始吗?

我想你需要一个拆分字符串的函数。 例如:

1.字符串

DECLARE @para VARCHAR(max)
SET @para='''2015'',''2016'',''2017'''
SELECT n.yr FROM (VALUES(CONVERT(XML,'<n>'+REPLACE(@para,',','</n><n>')+'</n>'))) x(doc)
CROSS APPLY(SELECT s.b.value('.','varchar(10)') AS yr FROM x.doc.nodes('n')s(b)) n
3。列

WITH paras(var1,var2,var3,var4)AS(
   SELECT '2015','2016','2016',null
)
SELECT t.yr FROM paras
CROSS APPLY(VALUES(var1),(var2),(var3),(var4))t(yr)
WHERE t.yr IS NOT NULL 

我仍在研究如何处理这种情况,但最终我将脚本转换为存储过程,然后将参数作为参数传递给存储过程。这导致参数以单个字符串的形式传递,然后我可以像Nolan Shang建议的那样拆分它。

不幸的是,(可能与SSRS版本不同)变量不是以我可以做到的方式来传递的。根据SQL Server Profiler,数据更像是:“2014”、“2015”、“2016”,而不是单个字符串。
DECLARE @var1 VARCHAR(10)='2015', @var2 VARCHAR(10)='2016', @var3 VARCHAR(10)='2017'
SELECT * FROM (VALUES(@var1),(@var2),(@var3)) t(yr)
WITH paras(var1,var2,var3,var4)AS(
   SELECT '2015','2016','2016',null
)
SELECT t.yr FROM paras
CROSS APPLY(VALUES(var1),(var2),(var3),(var4))t(yr)
WHERE t.yr IS NOT NULL