选择具有特定值的列(虚拟表)

时间:2019-07-12 08:43:21

标签: sql sql-server

我在SQL Server上有一个问题,我想编写一个与其FROM无关的查询。

我想SELECT使用创建视图表和分配值的结果。 为了便于理解,假设我要创建一个具有2列(keyvalue)的视图表:

+-------+-----------+
|KEY    |   Value   |
+-------+-----------+
|A      |   15      |
|B      |   16      |
|C      |   17      |
|D      |   18      |
|E      |   19      |
+-------+-----------+

所有值都来自查询本身,而不是来自表。

我的查询是:

SELECT ('A', 'B', 'C', 'D', 'E') AS KEY,
       (15, 16, 17, 18, 19) AS Value
FROM
    t1 ---- table doesn't matter

如何利用SELECT子句来实现它?

2 个答案:

答案 0 :(得分:2)

您可以使用table value constructor创建一个“虚拟”表,并像使用其他任何表一样,在WHERE子句中使用它:

select myTable.*
from 
( values ('A',15),
         ('B',16)) myTable([key],value)

key必须加引号,因为它是一个关键字。

答案 1 :(得分:0)

您可以尝试使用Pivot查询

select *
from 
(
  select Keys, Value
  from #yt
) src
pivot
(
  min(Value)
  for keys in ([A], [B], [C], [D], [E])
) piv;

DEMO