我如何从一个动态的数据透视表指定一个普通的表?(How can I assign a normal

2019-07-19 03:57发布

我需要从我们的当前日期的过去12个月使Stimulsoft报告,我用动态的数据透视表,使这个,原来的表是在图1

然后枢转表是像图2(更大的图像链接这里: http://i.stack.imgur.com/LPCuP.jpg )

在图1中,DACP_Value是在其对应于图2中。注意,培养被设定为PT-BR的时间行(巴西)

以下是在制造SQLFiddle生成透视表中的示例代码

http://www.sqlfiddle.com/#!3/3205a/23

我需要把一个普通表内的头这种动态数据(也可以是一个临时表),所以我可以在我的报表查询使用,并通过Stimulsoft软件识别。

Answer 1:

加入INTO YourTableSELECT您的代码:

DECLARE @Col NVARCHAR(MAX) = 
    (   SELECT  ', ' + QUOTENAME(CONVERT(VARCHAR, DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - (12 - Number), 0), 103)) + ' = [' + CAST(number AS VARCHAR) + ']'
        FROM    Master..spt_values
        WHERE   Type = 'P'
        AND     number BETWEEN 0 AND 12
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)')


DECLARE @SQL NVARCHAR(MAX) = 
        N'WITH Data AS
        (   SELECT  DACP_ID,
                    DACP_Value,
                    [MonthNum] = 12 - DATEDIFF(MONTH, DACP_Date, CURRENT_TIMESTAMP)
            FROM    yourtable
            WHERE   DATEDIFF(MONTH, DACP_Date, CURRENT_TIMESTAMP) BETWEEN 0 AND 12
        )   
        SELECT  DACP_ID' + @Col + '
        INTO YourTable --Add this line here
        FROM    Data
                PIVOT
                (   SUM(DACP_Value)
                    FOR MonthNum IN ([0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
                ) pvt;'

EXECUTE SP_EXECUTESQL @SQL


Answer 2:

作为一种方式,你可以使用Stimulsoft工具的主详细报告。 作为主表,您可以使用该表仅日期:

SELECT CONVERT(DATE, DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - (12 - Number), 0), 103) AS DT,
       CONVERT(VARCHAR(2),MONTH(DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - (12 - Number), 0))) + CONVERT(VARCHAR(4),YEAR(DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - (12 - Number), 0))) As MonthYear
  FROM Master..spt_values
 WHERE Type = 'P'
       AND number BETWEEN 0 AND 12

详细表,它的“yourTable”有额外列:

select *, convert(varchar(2),Month(DACP_date)) + convert(varchar(4),Year(DACP_date)) as MonthYear from yourtable

维吾尔上MonthYear列。 在报告中,您可以使用主数据的详细数据的交叉数据部件和组件DataBand。 :请从以下链接看到图像http://imgur.com/Ve03BXU



Answer 3:

也这是的情况下的解决方案时,数据的每个日期的量为每个日期相同,即ID是相同的。 如果不是这样,一个可能要添加更多的条件,显示在左侧头部。



文章来源: How can I assign a normal table from a dynamic pivot table?