选择许多值作为一列,而不是为每个值选择一列,SQL Server

时间:2019-01-11 05:17:09

标签: sql sql-server select

如果您在SQL Server中执行此查询,它将为您提供15个不同的列-每个邮政编码都有一个列。

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

我想要的是1列,其中包含所有15个值。我该怎么办?

4 个答案:

答案 0 :(得分:2)

您可以尝试使用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;

答案 1 :(得分:2)

我想使用From .... VALUES

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

sqlfiddle

答案 2 :(得分:1)

您可以使用union:

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

答案 3 :(得分:1)

尝试执行此操作,以避免重复使用 as

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'