【问题标题】:Column pivot problem getting repeated Id with pivot columns having null values使用具有空值的枢轴列获得重复 ID 的列枢轴问题
【发布时间】:2020-01-17 10:01:05
【问题描述】:

顶部是我的数据透视结果,下面是原始表格

我想要这样的结果 资产 ID | 77 | 78 | 79 | 80 | 81 | 82 1571539 | 99 |01/01/2020 | L460 | Avast 专业版| 01/30/2020|空值 8323444 | 103|01/28/2020 |电话我| Avast 专业版|空 |空

@pAssetTypeId int
as

IF OBJECT_ID('tempdb..##TBL_TEMP') IS NOT NULL
DROP TABLE #TBL_TEMP

DECLARE   @SQLQuery AS NVARCHAR(MAX)

DECLARE   @PivotColumns AS NVARCHAR(MAX)
DECLARE   @AssetId AS Varchar(MAX)

SELECT   @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(fm.FieldMaintenanceId)
FROM dbo.FieldData f
   LEFT JOIN dbo.AssetType a
   ON f.AssetTypeId = a.AssetTypeId
LEFT JOIN dbo.FieldMaintenance fm
   ON f.FieldMaintenanceId = fm.FieldMaintenanceId
   where a.AssetTypeId = @pAssetTypeId

SET   @SQLQuery =
   N'SELECT AssetId,' +   @PivotColumns + '
   INTO #TBL_TEMP
   FROM [dbo].[AssetDetails] a
   PIVOT( MAX([Data])
   FOR [FieldMaintenanceId] IN (' + @PivotColumns + ')) as Q'

EXEC sp_executesql @SQLQuery

Select * from #TBL_TEMP 

【问题讨论】:

    标签: sql-server group-by pivot


    【解决方案1】:

    Click to see desired pivot result

    IF OBJECT_ID('tempdb..##TBL_TEMP') IS NOT NULL
    DROP TABLE ##TBL_TEMP
    
    DECLARE   @SQLQuery AS NVARCHAR(MAX)
    
    DECLARE   @PivotColumns AS NVARCHAR(MAX)
    DECLARE   @AssetId AS Varchar(MAX)
    
    SELECT   @PivotColumns= COALESCE(@PivotColumns + ',','') + 
    QUOTENAME(fm.FieldMaintenanceId)
    FROM CONCEPASSET.dbo.FieldData f
       LEFT JOIN CONCEPASSET.dbo.AssetType a
       ON f.AssetTypeId = a.AssetTypeId
       LEFT JOIN CONCEPASSET.dbo.FieldMaintenance fm
       ON f.FieldMaintenanceId = fm.FieldMaintenanceId
       where a.AssetTypeId = 3
    

    SET @SQLQuery = N'选择 * 从 ( 选择 资产 ID, 资产类型 ID, 字段维护 ID, [数据] 来自 AssetDetails ) AS SourceTable PIVOT(MAX([Data]) FOR [FieldMaintenanceId] IN('+@PivotColumns+')) AS TableTest '

    EXEC sp_executesql @SQLQuery
    

    重新编写了代码,它成功了,谢谢大家!

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2017-08-14
      • 2021-03-31
      • 2019-11-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      相关资源
      最近更新 更多