【问题标题】:Concat values returned from a function inside of a cross joined table从交叉连接表内的函数返回的连接值
【发布时间】:2018-12-27 19:43:10
【问题描述】:

我需要将 SSRS 参数中的日期放入 UTC 转换函数中 在 concat 中无法识别这些值。

我现在在“s”附近遇到语法错误。

select concat(s.y+s.m+s.d])
from(
SELECT y.[Value] as y, m.[Value] as m, d.[Value] as d
 FROM ssrs.FnSplit(@YEAR,',') y 
cross join ssrs.FnSplit(@MONTH,',') m
cross join ssrs.FnSplit(@DAY,',') d
) s

注释前的代码

DECLARE @YEAR varchar(max)='2222,2111'
DECLARE @MONTH varchar(max)='1,2,3'
DECLARE @DAY varchar(max)='1,2'
DECLARE @START_DATE DATE

--SELECT @START_DATE = CAST((SELECT [Value] FROM ssrs.FnSplit(@YEAR,',') AS VARCHAR(4)) + '-' + RIGHT('0' + CAST((SELECT [Value] FROM ssrs.FnSplit(@MONTH,',') AS VARCHAR(2)), 2)
-- + '-' + CAST((SELECT [Value] FROM ssrs.FnSplit(@DAY,',') AS VARCHAR(4))

select  concat(y.[Value]+m.[Value]+d.[Value])
from (
  SELECT y.[Value], m.[Value], d.[Value]
  FROM ssrs.FnSplit(@YEAR,',') y 
  cross join ssrs.FnSplit(@MONTH,',') m
  cross join ssrs.FnSplit(@DAY,',') d
) s

【问题讨论】:

  • 您无法再访问y,而您正在使用concat,您现在正在访问s
  • 你有一个不必要的括号select concat(s.y+s.m+s.d])。您还可以考虑为要提取的值使用不同的别名以避免混淆。

标签: sql sql-server reporting-services


【解决方案1】:

你在找吗

SELECT DATEFROMPARTS(T1.Value, T2.Value, T3.Value) Dates
--Or CONCAT(T1.Value, '-', T2.Value, '-', T3.Value) StrDates
FROM STRING_SPLIT(@YEAR, ',') T1 
     CROSS APPLY
     STRING_SPLIT(@MONTH, ',') T2
     CROSS APPLY
     STRING_SPLIT(@DAY, ',') T3;

用你的 (FnSplit) 替换 STRING_SPLIT() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2020-02-24
    • 2021-05-26
    • 2010-10-14
    相关资源
    最近更新 更多