0

私は次のクエリを持っています、それは機能していますが、私が欲しいのはデータ「Entidad」と「Servicio」の2つの列を取得するだけなので、4つの列(同じ名前の3つ)を取得しますが、実行する方法が見つかりませんそれ..

SELECT
    Entidades.nombre as entidad,
    Servicios.nombre as servicio,
    sp.nombre        as servicio,
    sc.nombre        as servicio
FROM
    Entidades

LEFT JOIN Banksphere 

    INNER JOIN Servicios
    ON Banksphere.servicio_id = Servicios.id

ON Entidades.id = Banksphere.entidad_id

LEFT JOIN PAS 

     INNER JOIN Servicios sp
     ON sp.id = 3

ON Entidades.id = PAS.entidad_id

LEFT JOIN CAM 

    INNER JOIN Servicios sc
    ON sc.id = 0

ON Entidades.id = CAM.entidad_id
GROUP BY
    Entidades.id, Entidades.nombre, Servicios.nombre, sp.nombre, sc.nombre
ORDER BY
    Entidades.id

私が得た構造はこれです

Entidad     | Servicio | Servicio | Servicio
Corporativo | Abacon   | NULL     | CAM
Corporativo | MCI      | NULL     | CAM
Santander   | Sales    | PAS      | NULL

しかし、私はこれが欲しい...

Entidad     | Servicio
Corporativo | Abacon 
Corporativo | MCI    
Corporativo | CAM
Santander   | Sales   
Santander   | PAS  
4

1 に答える 1

2

UNPIVOT次の関数を使用できるはずです。

select DISTINCT entidad, value   -- use distinct if you want to remove duplicates
from
(
    SELECT
        Entidades.nombre as entidad,
        Servicios.nombre as servicio1,
        sp.nombre as servicio2,
        sc.nombre as servicio3
    FROM
        Entidades
    LEFT JOIN
        (Banksphere INNER JOIN Servicios
    ON (Banksphere.servicio_id = Servicios.id))
    ON Entidades.id = Banksphere.entidad_id
    LEFT JOIN
        (PAS INNER JOIN Servicios sp
    ON (sp.id = 3))
    ON Entidades.id = PAS.entidad_id
    LEFT JOIN
        (CAM INNER JOIN Servicios sc
    ON (sc.id = 0))
    ON Entidades.id = CAM.entidad_id
    GROUP BY
        Entidades.id, Entidades.nombre, Servicios.nombre, sp.nombre, sc.nombre
) src
unpivot
(
    value
    for col in (servicio1, servicio2, servicio3)
) unpiv

SQL FiddlewithDemoを参照してください

于 2012-12-17T18:56:53.497 に答える