Tengo un legado tabla con las siguientes columnas.

Create Table test
( id varchar(50)
, code1 varchar(50)
, codeDesc1 varchar(50)
, code2 varchar(50)
, codeDesc2 varchar(50)
, code3 varchar(50)
, codeDesc3 varchar(50)
, code4 varchar(50)
, codeDesc4 varchar(50)
, code5 varchar(50)
, codeDesc5 varchar(50)
, code6 varchar(50)
, codeDesc6 varchar(50)
)

insert into test (id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6)
values ('1','100.1', 'first code','100.2', 'Second code','100.3', 'Third code','100.4', 'Fourth code','100.5', 'Fifth code','100.6', 'Sixth code')

insert into test (id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6)
values ('2','100.1', 'first code','100.2', 'Second code','100.3', 'Third code','100.4', 'Fourth code','100.5', 'Fifth code','100.6', 'Sixth code')

select * from test

devuelve la siguiente:

id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6

1,100.1, first code,100.2, Second code,100.3, Third code,100.4, Fourth code,100.5, Fifth code,100.6, Sixth code

2,100.1, first code,100.2, Second code,100.3, Third code,100.4, Fourth code,100.5, Fifth code,100.6, Sixth code

Pero quiero obtener los datos como se muestra a continuación:

ID, Code, Description

1, 100.1, First Code
1, 100.2, Second Code
1, 100.3, Third Code
1, 100.4, Fourth Code
1, 100.5, Fifth Code
1, 100.6, Sixth Code
2, 100.1, First Code
2, 100.2, Second Code
2, 100.3, Third Code
2, 100.4, Fourth Code
2, 100.5, Fifth Code
2, 100.6, Sixth Code

Alguien me puede ayudar como hacer eso, por favor?

He probado el UNPIVOT pero no me da el resultado exacto que estaba buscando. Esta es la consulta que he usado, pero debe ser ajustado para obtener el resultado exacto donde me estoy dando el tiempo difícil.

SELECT Id, FieldCode , FieldValue
    FROM 
    (
        SELECT  id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6
        FROM test
    ) MyTable
    UNPIVOT
    (FieldValue FOR FieldCode IN (code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6))AS MyUnPivot

Gracias por su ayuda de antemano.

  • ¿Qué es esto ? SQL o algo por el estilo ? Por favor etiqueta adecuadamente
  • ¿Quieres DB a la salida, como que o quieres algún lenguaje de programación para la impresión como de que?
  • Gracias por tu respuesta. Sí, tengo la necesidad de consulta para hacer la transformación, porque tengo que tomar esta información y actualización de otra tabla. Sé que podría utilizar los cursores pero no me gustan los cursores y sé que hay una manera de hacerlo que con el PIVOTE/UNPIVOT comandos pero le falta algo y no lo veo.
  • Ya que no puedo responder a mi propia pregunta ahora, aquí está la solución:
InformationsquelleAutor Vincy | 2011-10-31

1 Comentario

  1. 1

    Nunca Mente, encontró la respuesta. Gracias a esta maravillosa Mangal el sitio web de la http://mangalpardeshi.blogspot.com/2009/04/unpivot-multiple-columns.html

    Y aquí está mi consulta que resolvió mi problema: puedo publicar aquí, así que si alguien ve

    SELECT Id, FieldCode, FieldValue
        FROM 
        (
            SELECT  id, code1, codeDesc1, code2, codeDesc2, code3, codeDesc3, code4, codeDesc4, code5, codeDesc5, code6, codeDesc6
            FROM test
        ) MyTable
    
        UNPIVOT
        (FieldCode FOR FieldCodes IN (code1, code2, code3, code4, code5, code6))AS CODE
    
        UNPIVOT
        (FieldValue FOR FieldValues IN (codeDesc1, codeDesc2, codeDesc3, codeDesc4, codeDesc5, codeDesc6))AS FieldValues
    
    WHERE RIGHT(FieldCodes,1) =  RIGHT(FieldValues,1)

    Ahora, el truco parte para obtener el resultado correcto de la espalda es en la cláusula where en la final que dependen de los nombres de columna se utilizan. Por lo tanto, tratar de entender el código antes de tratar de jugar con él.

    También, es una buena idea para comprobar ISNULL en la consulta inicial donde está devolviendo el original columnas. Porque una vez que está en UNPIVOT modo que usted no tiene un cambio de comprobar y puede casue un error.

    Buena Suerte!

Dejar respuesta

Please enter your comment!
Please enter your name here