Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Convertir tablas: filas a columnas (https://www.clubdelphi.com/foros/showthread.php?t=85248)

StartKill 20-02-2014 03:14:03

Convertir tablas: filas a columnas
 
Buenas foro,

Saludos foro, me dirijo a Uds. a un problema que aun no se como voy a solucionar.

Estoy trabajando sql server 2008

Tengo una tabla con los siguientes datos:

donde codigo y item es mi primary key
1.- codigo --> char(10)
2.- item --> int
3.- valor -->varchar(3)


Mis datos son mas o menos asi:

codigo, item, valor
cod001, 1, .t.
cod001, 2, .t.
cod001, 3, .i.
cod001, 4, .w.
----------------
cod002, 1, .i.
cod002, 2, .i.
cod002, 3, .i.
cod002, 4, .t.
--------------
cod004, 1, .w.
cod004, 2, .t.
cod004, 3, .w.
cod004, 4, .w.

Me gustaria tener un resultado asi:

codigo, f1, f2, f3, f4
cod001 .t. .t. .t. .w.
cod002 .i. .i. .i. .t.
cod004 .w. .t. .w. .w.

Esperando que mi duda/problema sea resuelto con la ayuda de Uds
Your friend
Startkil
Lima-Perú

olbeup 20-02-2014 09:24:45

Cita:

Empezado por StartKill (Mensaje 472838)
Buenas foro,

Saludos foro, me dirijo a Uds. a un problema que aun no se como voy a solucionar.

Estoy trabajando sql server 2008

Tengo una tabla con los siguientes datos:

donde codigo y item es mi primary key
1.- codigo --> char(10)
2.- item --> int
3.- valor -->varchar(3)


Mis datos son mas o menos asi:

codigo, item, valor
cod001, 1, .t.
cod001, 2, .t.
cod001, 3, .i.
cod001, 4, .w.
----------------
cod002, 1, .i.
cod002, 2, .i.
cod002, 3, .i.
cod002, 4, .t.
--------------
cod004, 1, .w.
cod004, 2, .t.
cod004, 3, .w.
cod004, 4, .w.

Me gustaria tener un resultado asi:

codigo, f1, f2, f3, f4
cod001 .t. .t. .t. .w.
cod002 .i. .i. .i. .t.
cod004 .w. .t. .w. .w.

Esperando que mi duda/problema sea resuelto con la ayuda de Uds
Your friend
Startkil
Lima-Perú

Hola StartKill,

Lo que planteas se consigue con el PIVOT, mira a ver si te vale.
Código SQL [-]
SELECT
    CODIGO
    ,[1] AS F1
    ,[2] AS F2
    ,[3] AS F3
    ,[4] AS F4
  FROM
    (
     SELECT
          CODIGO
          ,ITEM
          ,VALOR
        FROM  myTable
    ) AS P
    PIVOT
      (
        MAX(VALOR)
        FOR ITEM IN ([1], [2], [3], [4])
      ) AS PVT

Un saludo

StartKill 20-02-2014 13:52:45

Hola olbeup

Gracias por tu tiempo en responder.

En una primera instancia dudé que funcionára ya que siempre pensé que PIVOT solo calculaba valores númericos en (MAX, MIN).

Código SQL [-]
SELECT
    CODIGO
    ,[1] AS F1
    ,[2] AS F2
    ,[3] AS F3
    ,[4] AS F4
  FROM
    (
     SELECT
          CODIGO
          ,ITEM
          ,VALOR
        FROM  myTable
    ) AS P
    PIVOT
      (
        MAX(VALOR)
        FOR ITEM IN ([1], [2], [3], [4])
      ) AS PVT

Realmente me falta experiencia, muchas gracias por tu ayuda..

Un abrazo.

Startkill
Lima-Perú


La franja horaria es GMT +2. Ahora son las 16:51:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi