使用现有动态表名称和日期时间参数 SQL Server 创建数据集

问题描述 投票:0回答:2

涉及表

1

我想创建带有日期时间参数的数据集,当用户选择日期时,它会自动从日期表中选择数据,如图(动态表名称)。

创建的SP如图所示

2

已经使用方法存储过程,但是在将存储过程与另一个表连接时遇到了麻烦。您能建议解决这个问题的最佳方法吗?

sql sql-server join stored-procedures reporting-services
2个回答
0
投票

将每一天存储在单独的表中可能不是最好的方法,但稍后会详细介绍,以解决眼前的问题....

您可以将 SP 的结果转储到临时表中并加入其中。

我在这里假设您的

SensorDataRainfall
表(没有日期的表)与带有日期的表具有相同的结构。

您的数据集查询将如下所示。

SELECT TOP 0 * INTO #SDR FROM dbo.SensorDataRainfall -- create an empty table to put the results in.

INSERT INTO #SDR EXEC spGetDataRainfall @year, @month -- dump data from the SP

SELECT * 
    FROM #SDR a 
    JOIN myOtherTable b on a.column = b.column

但是 您的一般方法存在一些问题。

拥有本质上是按日期分割的相同数据的数据不太可扩展,即使数据量非常小,这也不是一个好方法。您可能应该首先调查创建这些表的过程,并将数据插入到具有相同结构但还包含年份和月份列的表中。这样,所有数据都将在一个表中,并且可以轻松查询单个月或多个月、数年的数据。


0
投票

您可以使用表函数。您可以与另一张桌子一起加入T.F。

CREATE FUNCTION [dbo].[fn_test] 
(
--INPUT PARAMETERS
) 
RETURNS @output TABLE(ID NVARCHAR(MAX)) 
BEGIN 
        INSERT INTO @output (ID)  
        EXEC('SELECT 1 AS A')
    RETURN 
END
© www.soinside.com 2019 - 2024. All rights reserved.