none
Ayuda SQL RRS feed

  • Pregunta

  • Hola, estoy usando sql y tengo una duda. Es que tengo ya una tabla pogramada por mi que las columnas son: usuarios, tiempo, type y value. Type se compone de dos tipos A y B (lo llamo asi para que sea todo mas escueto y facil de entender) y segun si es A o B value es una cosa u otra (no hay un valor de value para A y B a la vez). Entonces lo que quiero es suprimir la columna type y value y poner dos columnas llamadas A y B donde dentro de estas columnas tengas los valores type. No lo consigo porque cuando consigo hacer la de por ejemplo A hago un WHERE y ya para B no puedo usarlo porque ya me ha hecho la seleccion para A, ¿como podria hacerlo? llevo ya varios dias y es imposible

    Gracias!


    viernes, 15 de diciembre de 2017 9:10

Respuestas

  • Hola, un poco enredada tu explicación, pero por lo que entiendo seria algo así:

    DECLARE @Tutabla AS TABLE
    (
      [Type] CHAR(1),
      [value]  int
    )

    INSERT INTO @Tutabla (   Type ,
                             value
                         )
    VALUES (   'A' , -- Type - char(1)
               2    -- value - int
           ),('B',5),('B',4),('B',3),('A',2);

     SELECT 
        CASE [Type] 
       WHEN 'A' THEN [value] 
    END AS 'A',
    CASE [Type]
       WHEN 'B' THEN [value] 
        END AS 'B'
    FROM @TuTabla




    viernes, 15 de diciembre de 2017 11:57
  • He anexado una demo y corregi un typo error :-), en esta pagina te dan el listado de palabras claves o reservadas que NUNCA deberias usar como nombre en tus disenos de tablas:

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/reserved-keywords-transact-sql


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    viernes, 15 de diciembre de 2017 13:32

Todas las respuestas

  • Hola, un poco enredada tu explicación, pero por lo que entiendo seria algo así:

    DECLARE @Tutabla AS TABLE
    (
      [Type] CHAR(1),
      [value]  int
    )

    INSERT INTO @Tutabla (   Type ,
                             value
                         )
    VALUES (   'A' , -- Type - char(1)
               2    -- value - int
           ),('B',5),('B',4),('B',3),('A',2);

     SELECT 
        CASE [Type] 
       WHEN 'A' THEN [value] 
    END AS 'A',
    CASE [Type]
       WHEN 'B' THEN [value] 
        END AS 'B'
    FROM @TuTabla




    viernes, 15 de diciembre de 2017 11:57
  • Hola, ¿por qué es mejor no usar esos nombres? lo pregunto porque estoy empezando en este lenguaje y todo ayuda me viene genial de verdad. Por otro lado estoy intentado lo que me has comentado me da este error: Error: Syntax error: Expected keyword ELSE or keyword END but got keyword AS at [3:44]

    Y no he tocado nada distinto a lo que tu me has puesto.

    Gracias de antemano !!

    Por cierto si sabes algun libro pagina o tutorial para aprender me vendria genial porque estoy aprendiendo de forma autodidacta es decir probando y volviendo a probar.

    viernes, 15 de diciembre de 2017 12:21
  • He anexado una demo y corregi un typo error :-), en esta pagina te dan el listado de palabras claves o reservadas que NUNCA deberias usar como nombre en tus disenos de tablas:

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/reserved-keywords-transact-sql


    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    viernes, 15 de diciembre de 2017 13:32