Saltar al contenido

¿Cómo puedo seleccionar de la lista de valores en SQL Server?

Anduvimos investigando en distintos sitios y así mostrarte la solución para tu inquietud, si tienes dudas puedes dejarnos un comentario y responderemos con mucho gusto, porque estamos para ayudarte.

Solución:

Disponible solo en SQL Server 2008 y posteriores, el constructor de filas tiene este formato:
Podrías usar

SELECT DISTINCT * FROM (VALUES (1), (1), (1), (2), (5), (1), (6)) AS X(a)

Muchos escribieron, entre ellos:

  • [MS official] https://docs.microsoft.com/en-us/sql/t-sql/queries/table-value-constructor-transact-sql
  • http://www.sql-server-helper.com/sql-server-2008/row-value-constructor-as-derived-table.aspx

En general :

SELECT 
  DISTINCT 
      FieldName1, FieldName2, ..., FieldNameN
FROM
  (
    Values
        ( ValueForField1, ValueForField2,..., ValueForFieldN ),
        ( ValueForField1, ValueForField2,..., ValueForFieldN ),
        ( ValueForField1, ValueForField2,..., ValueForFieldN ),
        ( ValueForField1, ValueForField2,..., ValueForFieldN ),
        ( ValueForField1, ValueForField2,..., ValueForFieldN )
  ) AS TempTableName ( FieldName1, FieldName2, ..., FieldNameN )

En tu caso :

Select 
  distinct
  TempTableName.Field1 
From 
  (
  VALUES
    (1), 
    (1), 
    (1), 
    (2), 
    (5), 
    (1), 
    (6)
  ) AS TempTableName (Field1)

La forma más sencilla de obtener valores distintos de una larga lista de texto delimitado por comas sería usar una búsqueda y un reemplazo con UNION para obtener los valores distintos.

SELECT 1
UNION SELECT 1
UNION SELECT 1
UNION SELECT 2
UNION SELECT 5
UNION SELECT 1
UNION SELECT 6

Aplicado a su línea larga de texto delimitado por comas

  • Busque y reemplace cada coma con UNION SELECT
  • Agrega un SELECT delante de la declaración

Ahora debería tener una consulta funcional

Si te mola el tema, puedes dejar una reseña acerca de qué le añadirías a este artículo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *