3
votes

Sélectionnez plusieurs valeurs dans une colonne, pas une colonne pour chaque valeur, SQL Server

Si vous faites cette requête dans SQL Server, vous obtiendrez 15 colonnes différentes, une pour chaque code postal.

SELECT 
    'CB89RX', 'CB259BL', 'CB19BF', 'CB245HS', 'CB30AP', 'CB12LJ', 
    'CB21RB', 'CB28PX', 'CB28PE', 'CB250HX', 'CB231HN', 'CB58TD', 
    'CB246AY', 'CB42QT', 'CB249JA' AS A

Ce que je veux, c'est une colonne contenant les 15 valeurs. Comment puis-je faire cela?


2 commentaires

de quelle version de serveur SQL s'agit-il?


Juste pour être clair: vous voulez une valeur par ligne (15 lignes / 1 colonne) et non concaténée en une seule valeur (1 ligne / 1 colonne)?


4 Réponses :


2
votes

Vous pouvez essayer d'utiliser UNPIVOT

select u.postcode
    from tablename
    unpivot
    (
      postcode
      for val in (CB89RX, CB259BL, CB19BF, CB245HS, CB30AP, CB12LJ, CB21RB, CB28PX, CB28PE, CB250HX, CB231HN, CB58TD, CB246AY, CB42QT, CB249JA)
    ) u;


0 commentaires

1
votes

Vous pouvez utiliser l'union:

SELECT 'CB89RX' as PostalCode
Union
Select  'CB19BF'  as PostalCode 
Union 
Select 'CB245HS' as PostalCode 
Union 
... 


0 commentaires

1
votes

Essayez ceci pour éviter l'utilisation répétée de comme .

SELECT   'CB89RX'  as A
   union 
   select  'CB259BL' 
   union 
   select 'CB19BF' 
   union 
   select 'CB245HS'
   union 
   select 'CB30AP'
   union 
   select    'CB12LJ'
   union 
   select    'CB21RB'
   union 
   select    'CB28PX'   
   union 
   select    'CB28PE'
   union 
   select    'CB250HX'
   union 
   select 'CB231HN'
   union 
   select 'CB58TD'
   union 
   select 'CB246AY'
   union 
   select 'CB42QT'
   union 
   select 'CB249JA' 


0 commentaires

2
votes

Je voudrais utiliser From .... VALUES

Select 
    val
From 
  (
  VALUES
    ('CB89RX'), 
    ('CB259BL'), 
    ....
  ) AS T (val)

sqlfiddle


1 commentaires

Merci, je l'aime le plus parce que je peux ensuite appliquer la commande par etc.