【问题标题】:Add dynamic column to table at runtime using Telerik reporting tool [closed]使用 Telerik 报告工具在运行时向表中添加动态列 [关闭]
【发布时间】:2021-11-09 01:36:14
【问题描述】:

我想在运行时使用 Telerik 报告工具向表中添加新列 我正在使用存储过程作为我的代码的 SQL 数据源

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Validate_years]
    @yearsselected nvarchar(max)
AS
BEGIN
     SET NOCOUNT ON;

     IF 1 = 0 
     BEGIN
         SET FMTONLY OFF
     END

     DECLARE @sql nvarchar(max) = N'SELECT OutputVar_Name, UnitName '
 
     SELECT @sql += ',' + QUOTENAME(c.name)
     FROM sys.columns AS c
     INNER JOIN [ICAM_DB].[dbo].[Years_Tbl] AS b ON c.name = CONVERT(sysname, Year)
     WHERE c.[object_id] = OBJECT_ID(N'[ICAM_DB].[dbo].[OutputStreamDataSetup_Tbl]') and  CONVERT(sysname, Year)=@yearsselected;;
  
SET @sql += N' FROM [ICAM_DB].[dbo].[OutputStreamDataSetup_Tbl] WHERE ResultVariable_ID in (1016,1014,1015)';
set @yearsselected=+  N' FROM [ICAM_DB].[dbo].[Years_Tbl] WHERE Year  IN (@OutputStreamDataSetup_Tbl_Year )';

EXEC sys.sp_executesql @sql;

END

这是输出

-----------------------------------------------------------------------
 |unitname|  |OutputVar_Name|         | 2010| | 2011| | 2020| | 2050 | 

------------------------------------------------------------------------
 stream1          test                 122    221      21       170
 stream2          test                 134    222      25       256
 stream3          test                 155    243      50       568
 stream4          test                 123    144      63       430
........................................................................

从年份表中,所有动态生成的年份列我希望报告也动态生成它 **更新 ** 我从中检索数据的两个表 表A

---------------------------------------------------------------------
|id| |name|           | 2010| | 2011| | 2012| | 2013| ...| 2060|

----------------------------------------------------------------------
1   stream1            122    221      123   111
2   stream2            134    222      234   222
3   stream3            155    243      234   333
4   stream4            123    144      345   444
...................................................................

表 B 这是动态的

--------------------
|yearsid| |years|          
--------------------
1        2010           
2        2011            
3        2020            
4        2050            
....................

【问题讨论】:

  • 上面的 SQL 代码是特定于产品的。您使用的是哪个 dbms? (也许是 MS SQL Server?)
  • 我正在使用 Microsoft SQL 管理工作室 2019
  • 没有 SSMS 2019 @ReemElshenawy,最新版本是 18.9.2。你是说 SQL Server 2019 吗?
  • 是 sql server 2019 ssms 18.9.2

标签: sql sql-server tsql stored-procedures telerik-reporting


【解决方案1】:

只需在行上选择年份,然后让前端担心旋转结果。例如

SELECT OutputVar_Name, UnitName, Year
FROM [ICAM_DB].[dbo].[OutputStreamDataSetup_Tbl] 
WHERE ResultVariable_ID in (1016,1014,1015)
and Year  IN ( select cast(value as int) from string_split(@OutputStreamDataSetup_Tbl_Year,',') )

【讨论】:

  • 嗨,大卫,这不是一张表中的所有数据,而是两年表中的数据 tbl 和 outputstreamsDataSetup Tbl,它们没有任何关系
  • 随便。只需编写一个返回一组固定列和可变行数的查询。这就是 SQL 工作得最好的方式。尝试将可变数据放在 SQL 中的列上是一种复杂的技巧。然后在前端显示你想要的数据。
  • 我不确定我是否理解您的意思是对表进行透视和反透视我试过了,但我问的是如何在 Telerik 报告工具的运行时更改这些值我想让列动态变化,如果你能告诉我一个例子吗?
  • 这是一个 Telerik 的问题,我对那个工具一无所知。但是您正在寻找一些 UI 元素,例如 SSRS Tablix、Power BI 矩阵或 Excel 数据透视表。或者,如果这是自定义应用程序,您可以在代码中转换数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多