Можно ли ВЫБРАТЬ несколько констант в несколько строк набора результатов в SQL? - PullRequest
2 голосов
/ 20 января 2009

Я знаю, что могу "ВЫБРАТЬ 5 КАК ФУ" и получить набор результатов:

Foo

5

(1 строка)

... есть ли способ "ВЫБРАТЬ 5,6,7 AS foo" и получить набор результатов:

Foo

5

6

7

(3 ряда)

... Я хорошо знаю, что это не типичное использование БД, и любое возможное использование этого, вероятно, лучше использовать с более обычной техникой. Еще технический вопрос.

Примечание: я знаю, что могу использовать большой общий список UNION - я пытаюсь найти что-то еще.

Ответы [ 4 ]

5 голосов
/ 20 января 2009

это легко с таблицей чисел, вот пример

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 голос
/ 20 января 2009

Просто для удовольствия, не мечтал бы использовать его по-настоящему:

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;
1 голос
/ 20 января 2009

Возможно использовать эти и другие методы (как вам скажет любой, кто брал интервью на должность разработчика базы данных). Но обычно это проще (и инструменты более уместны) сделать это на другом уровне абстракции; т. е. ваш DAL или выше, где вы просматриваете данные в виде какого-либо списка. Хотя продукты rdbms предоставляют фасилитаторы, это искажение реляционной концептуальной модели.

1 голос
/ 20 января 2009
select foo
from (select 1 as n1, 2 as n2, 3 as n3) bar
unpivot (foo for x in (n1, n2, n3)) baz;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...