Je sais que je peux "SELECT 5 AS foo" et get le résultat:
foo
5
(1 rang)
- Comment puis-je get le nombre d'éléments dans une colonne qui correspondent aux éléments d'une autre colonne?
- Chercher dans SP
- Comment puis-je améliorer cette déclaration SQL Server SELECT Adresse postale?
- L'événement triggersur est déclenché une seule fois pour la database Microsoft SQL Server 2005 si plusieurs lignes sont mises à jour?
- Sélectionnez une ligne distincte avec la date maximale de la table SQL Server?
… est-il possible de "SELECT 5,6,7 AS foo" et get le résultat:
foo
5
6
7
(3 rangées)
… Je suis bien conscient que ce n'est pas un usage typique de la DB, et tout usage concevable de cette technique est probablement préférable à une technique plus ordinaire. Plus d'une question technique.
Note: Je sais que je pourrais utiliser une grosse list brute d'UNIONs – j'essaie de find autre chose.
c'est facile avec une table de nombres, voici un exemple
select number as foo from master..spt_values where type = 'p' and number between 5 and 7
ou si vous voulez utiliser dans
select number as foo from master..spt_values where type = 'p' and number in(5,6,7)
select foo from (select 1 as n1, 2 as n2, 3 as n3) bar unpivot (foo for x in (n1, n2, n3)) baz;
Il est possible d'utiliser ces techniques et d'autres (comme toute personne qui a interviewé pour un post de développeur de database vous le dira). Mais il est généralement plus facile (et les outils sont plus appropriés) de le faire dans une autre couche d'abstraction; c'est-à-dire votre DAL, ou au-delà, où vous visualisez datatables sous forme de list quelconque. Bien que les produits rdbms fournissent des facilitateurs, c'est une distorsion du model conceptuel relationnel.
Juste pour le plaisir, ne rêverait pas de l'utiliser pour de vrai:
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;