【问题标题】:Copy oldtable to newTable base on pivot query result?根据数据透视查询结果将旧表复制到新表?
【发布时间】:2020-01-17 05:24:30
【问题描述】:

我有一个来自透视表*(动态列)* 的透视查询,我的问题是我想将透视结果复制/克隆到 new_table 中。就是不知道怎么弄,

查询:

DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
SET @cols = STUFF((SELECT DISTINCT','+QUOTENAME(c.ReportedDate)
FROM dbo.Activity c FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '');
SELECT @query = 'SELECT * FROM (SELECT  b.Description, CONVERT(VARCHAR(10), reportedDate, 120) as reportedDate,Status 
FROM Activity left join ActivityType b on b.activityTypeId = Activity.ActivityTypeId ) 
AS t PIVOT  (   COUNT(reportedDate)    FOR reportedDate IN( ' + @cols + ' )' + ') AS p ;'
 EXECUTE (@query);

如何实现我的期望,以相同的数据结果从 pivotTable 到 new_table 获得相同的结果?

【问题讨论】:

    标签: sql-server database c#-4.0


    【解决方案1】:

    您可以使用表(或全局临时表)通过 select into 存储数据,这样您就可以访问它。

    DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
    SET @cols = STUFF((SELECT DISTINCT','+QUOTENAME(c.ReportedDate)
    FROM dbo.Activity c FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '');
    SELECT @query = 'SELECT * into ##results FROM (SELECT  b.Description, CONVERT(VARCHAR(10), reportedDate, 120) as reportedDate,Status 
    FROM Activity left join ActivityType b on b.activityTypeId = Activity.ActivityTypeId ) 
    AS t PIVOT  (   COUNT(reportedDate)    FOR reportedDate IN( ' + @cols + ' )' + ') AS p ;'
      EXECUTE (@query);
    
    SELECT * FROM ##results
    

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多