【问题标题】:SSRS: Display field using CAST in sqlSSRS:在 sql 中使用 CAST 显示字段
【发布时间】:2015-03-19 20:56:03
【问题描述】:

我正在尝试使用iif 语句在同一字段中显示一个值。但是一个是INT,另一个是Decimal,最后一个是百分比。所以,我在 SQL 中将CAST 他们作为varchar。如何在 SSRS 字段中显示结果?

这是一个例子:

IF @Choice = '1'
BEGIN
    SELECT 
       UserId, CAST(IntNum AS VarChar(10)) AS Result
    FROM Sample 
END 
ELSE IF @Choice = '2'
BEGIN
    SELECT 
       UserId, CAST(DecNum AS VarChar(10)) AS Result
    FROM Sample 
END

如何在 SSRS 字段中显示Result

【问题讨论】:

  • 您真的需要将这些显示在一个字段中吗?我们通过在报表中创建三个字段(列或占位符)并动态隐藏和显示它们来完成类似的操作。如果这样做,那么在导出到 Excel 时将得到数字,而不是代表数字的字符串。这是基于 Jason 的回答。

标签: sql sql-server tsql reporting-services


【解决方案1】:

为什么不在您的 SQL 语句中嵌入逻辑,为什么不在报告中这样做,因为(可能)这是定义 @Choice 的地方?

SQL:

-- @Choice is not needed in this query.
SELECT UserId, IntNum, DecNum
FROM Sample

报告:

在数据集的字段列表中添加一个计算字段(称为Result):

=IIF(Parameters!Choice.Value = 1, Fields!IntNum.Value.ToString, Fields!DecNum.Value.ToString)

现在您的报告将在 DataSet 中有 4 个字段:

  • 用户 ID(整数)
  • IntNum (int)
  • DecNum (dec)
  • 结果(字符串)

【讨论】:

    【解决方案2】:

    我认为最好在 CASE 语句中执行您的逻辑,这实际上是一列,因此它应该在 SSRS 中运行良好。

    SELECT  UserID,
            CASE
                WHEN @Choice = 1 THEN CAST(IntNum AS VARCHAR(10))
                WHEN @Choice = 2 THEN CAST(DecNum AS VARCHAR(10))
                WHEN @Choice = 3 THEN CAST(PercentageNum AS VARCHAR(10))
            END AS Result
    FROM    [Sample]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多