Pivot - what is wrong with this query?

  • Hello All, I need a second pair of eyes to find what I am doing wrong here and why doesn;t it work:

    IF OBJECT_ID('Tempdb..#SourceTable') IS NOT NULL DROP TABLE #SourceTable
    CREATE TABLE #SourceTable ([VMID] INT, [VM_NAME] VARCHAR(100), [FIELD_NAME] VARCHAR(100), [FIELD_VALUE] VARCHAR(100))

    INSERT INTO #SourceTable ([VMID], [VM_NAME], [FIELD_NAME], [FIELD_VALUE])
    VALUES
        ('57499', 'machine_1', 'BusinessCriticality', '3'),
        ('57499', 'machine_1', 'CostCenter', '912'),
        ('57499', 'machine_1', 'Last Backup', '24.03.2015 21:03:57'),

        ('116007', 'machine_2', 'BusinessCriticality', '3'),
        ('116007', 'machine_2', 'CostCenter', ''),
        ('116007', 'machine_2', 'Last Backup', '20.03.2017 21:05:41'),

        ('129708', 'machine_3', 'BusinessCriticality', '3'),
        ('129708', 'machine_3', 'CostCenter', '911'),
        ('129708', 'machine_3', 'Last Backup', '3/20/2017 10:38:10 PM')

    SELECT [VM_NAME], [BusinessCriticality], [CostCenter], [Last Backup]
    FROM
        (
            SELECT * FROM #SourceTable
        ) S
    PIVOT
        (
            AVG([VMID])
            FOR FIELD_NAME IN ([BusinessCriticality], [CostCenter], [Last Backup])
        ) AS PivotTable
    ORDER BY [VM_NAME]

  • The query works.

    What is your expected outcome?

  • This, maybe?

    IF OBJECT_ID('Tempdb..#SourceTable') IS NOT NULL DROP TABLE #SourceTable
    CREATE TABLE #SourceTable ([VMID] INT, [VM_NAME] VARCHAR(100), [FIELD_NAME] VARCHAR(100), [FIELD_VALUE] VARCHAR(100))

    INSERT INTO #SourceTable ([VMID], [VM_NAME], [FIELD_NAME], [FIELD_VALUE])
    VALUES
      ('57499', 'machine_1', 'BusinessCriticality', '3'),
      ('57499', 'machine_1', 'CostCenter', '912'),
      ('57499', 'machine_1', 'Last Backup', '24.03.2015 21:03:57'),

      ('116007', 'machine_2', 'BusinessCriticality', '3'),
      ('116007', 'machine_2', 'CostCenter', ''),
      ('116007', 'machine_2', 'Last Backup', '20.03.2017 21:05:41'),

      ('129708', 'machine_3', 'BusinessCriticality', '3'),
      ('129708', 'machine_3', 'CostCenter', '911'),
      ('129708', 'machine_3', 'Last Backup', '3/20/2017 10:38:10 PM')

    SELECT [VM_NAME], [BusinessCriticality], [CostCenter], [Last Backup]
    FROM
      (
       SELECT * FROM #SourceTable
      ) S
    PIVOT
      (
       Max([FIELD_VALUE])
       FOR FIELD_NAME IN ([BusinessCriticality], [CostCenter], [Last Backup])
      ) AS PivotTable
    ORDER BY [VM_NAME]

    If you haven't even tried to resolve your issue, please don't expect the hard-working volunteers here to waste their time providing links to answers which you could easily have found yourself.

  • Expected outcome should be:

    VM_NAME BusinessCriticalityCostCenterLast Backup
    machine_1 392124.03.2015 21:03:57
    machine_2 3 20.03.2017 21:05:41
    machine_3 39113/20/2017 22:38
  • Phil Parkin - Tuesday, March 21, 2017 5:52 AM

    This, maybe?

    IF OBJECT_ID('Tempdb..#SourceTable') IS NOT NULL DROP TABLE #SourceTable
    CREATE TABLE #SourceTable ([VMID] INT, [VM_NAME] VARCHAR(100), [FIELD_NAME] VARCHAR(100), [FIELD_VALUE] VARCHAR(100))

    INSERT INTO #SourceTable ([VMID], [VM_NAME], [FIELD_NAME], [FIELD_VALUE])
    VALUES
      ('57499', 'machine_1', 'BusinessCriticality', '3'),
      ('57499', 'machine_1', 'CostCenter', '912'),
      ('57499', 'machine_1', 'Last Backup', '24.03.2015 21:03:57'),

      ('116007', 'machine_2', 'BusinessCriticality', '3'),
      ('116007', 'machine_2', 'CostCenter', ''),
      ('116007', 'machine_2', 'Last Backup', '20.03.2017 21:05:41'),

      ('129708', 'machine_3', 'BusinessCriticality', '3'),
      ('129708', 'machine_3', 'CostCenter', '911'),
      ('129708', 'machine_3', 'Last Backup', '3/20/2017 10:38:10 PM')

    SELECT [VM_NAME], [BusinessCriticality], [CostCenter], [Last Backup]
    FROM
      (
       SELECT * FROM #SourceTable
      ) S
    PIVOT
      (
       Max([FIELD_VALUE])
       FOR FIELD_NAME IN ([BusinessCriticality], [CostCenter], [Last Backup])
      ) AS PivotTable
    ORDER BY [VM_NAME]

    Yes, that's exactly what I wanted, Thank You!

Viewing 5 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic. Login to reply