我知道我可以“选择5 AS foo”并获得结果集:
FOO
5
(1行)
...有没有办法“SELECT 5,6,7 AS foo”并得到结果集:
FOO
5
6
7
(3行)
...我很清楚这不是典型的数据库使用情况,任何可以想象的使用方法都可能更适合采用更普通的技术。更多的技术问题。
注意:我知道我可以使用大量的UNION列表 - 我正在尝试寻找别的东西。
答案 0 :(得分:5)
使用数字表很容易,这是一个例子
select number as foo
from master..spt_values
where type = 'p'
and number between 5 and 7
或者如果你想在
中使用select number as foo
from master..spt_values
where type = 'p'
and number in(5,6,7)
答案 1 :(得分:1)
select foo
from (select 1 as n1, 2 as n2, 3 as n3) bar
unpivot (foo for x in (n1, n2, n3)) baz;
答案 2 :(得分:1)
可以使用这些和其他技术(因为任何接受过数据库开发人员访谈的人都会告诉你)。但是在另一个抽象层中执行此操作通常更容易(并且工具更合适);即您的DAL或更高级别,您将数据视为某种列表。虽然rdbms产品提供了促进因素,但它却是关系概念模型的扭曲。
答案 3 :(得分:1)
只是为了好玩,不会梦想真实地使用它:
WITH numbers AS
(
SELECT ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
FROM sys.all_objects
)
SELECT RowNumber
FROM numbers
WHERE RowNumber BETWEEN 5 AND 7;