2013-06-27 4 views
0

Как я могу использовать этот SQL-запрос как в преобразовании нескольких столбцов в несколько строк? Я не нашел аналогичный пример, который содержит строковые данные.SQL Server UNPIVOT Столбцы в строки, содержащие String DATA

Я использую следующий запрос:

SELECT MIN(DISTINCT CASE WHEN ARP.DisplayName0 = 'Adobe Reader XI (11.0.01)' AND 
           ARP.Version0 = '11.0.01' 
         THEN 'Adobe Reader XI (11.0.01) is Complaint' 
         ELSE 'Adobe Reader XI (11.0.01) is not Complaint' 
        END) as Reader, 
     MIN(DISTINCT CASE WHEN ARP.DisplayName0 = 'QuickTime' AND 
           ARP.Version0 = '7.73.80.64' 
         THEN 'Apple QuickTime is Complaint' 
         ELSE 'Apple QuickTime is not Complaint' 
        END) as Quicktime, 
     MIN(DISTINCT CASE WHEN ARP.DisplayName0 = 'McAfee Host Intrusion Prevention' AND 
           ARP.Version0 = '8.00.0202' 
         THEN 'McAfee HIPS is Complaint' 
         ELSE 'McAfee HIPS is not Complaint' 
        END) as 'McAfee HIPS' 
FROM dbo.v_Add_Remove_Programs AS ARP 
RIGHT OUTER JOIN dbo.v_R_System AS SYS ON ARP.ResourceID = SYS.ResourceID 
WHERE (SYS.Netbios_Name0 = 'ese-pkg-04a') 
GROUP BY SYS.Netbios_Name0, SYS.ResourceID 

, возвращенным:

Reader         Quicktime       McAfee HIPS 
Adobe Reader XI (11.0.01) is Complaint Apple QuickTime is not Complaint McAfee HIPS is not Complaint 

Мой желаемый формат:

  • Читатель Adobe Reader XI (11.0.01) является жалоба
  • Quicktime Apple QuickTime не является жалобой
  • McAfee McAfee Бедра HIPS не жалоба

ответ

0

Try:

SELECT MIN(CASE DN.Name 
       WHEN 'Adobe Reader XI (11.0.01)' 
       THEN CASE ARP.Version0 WHEN '11.0.01' 
         THEN 'Adobe Reader XI (11.0.01) is Complaint' 
         ELSE 'Adobe Reader XI (11.0.01) is not Complaint' 
        END 
       WHEN 'QuickTime' 
       THEN CASE ARP.Version0 WHEN '7.73.80.64' 
         THEN 'Apple QuickTime is Complaint' 
         ELSE 'Apple QuickTime is not Complaint' 
        END 
       WHEN 'McAfee Host Intrusion Prevention' 
       THEN CASE ARP.Version0 WHEN '8.00.0202' 
         THEN 'McAfee HIPS is Complaint' 
         ELSE 'McAfee HIPS is not Complaint' 
        END 
      END) as Complaint 
FROM (SELECT 'Adobe Reader XI (11.0.01)' Name UNION ALL 
     SELECT 'QuickTime' UNION ALL 
     SELECT 'McAfee Host Intrusion Prevention') AS DN 
CROSS JOIN dbo.v_R_System AS SYS 
LEFT JOIN dbo.v_Add_Remove_Programs AS ARP 
    ON ARP.ResourceID = SYS.ResourceID AND ARP.DisplayName0 = DN.Name 
WHERE SYS.Netbios_Name0 = 'ese-pkg-04a' 
GROUP BY SYS.Netbios_Name0, DN.Name