【发布时间】: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