Question

Je veux utiliser une liste de numéros arbitraires comme une sorte d'entrée à une sélection. Option A, bien sûr, est de créer une table temporaire qui contient seulement des valeurs (par exemple, le 1,2,3).

J'espère que vous savez ce que les gens Option> A est.

Supposons que l'énoncé est comme:

select Fx,
XXXXXX as Foo
from MyTable
where MyTest depends on each XXXXXX

Donc, si je pouvais faire comme par magie XXXXX une liste de valeurs (1,2,3), je serais comme un ResultSet:

    My val | Foo
    -------+---
       cat | 1
     mouse | 2
cheesecake | 3

Encore une fois, je pourrais la source des entrées d'une table, mais je préfère ne pas si ce n'est pas nécessaire. Gourous, s'il vous plaît carillon.

TIA.

Était-ce utile?

La solution

Vous trouverez probablement le succès en utilisant la ROW_NUMBER () Fenêtre de fonction d'agrégation.

Ordre aléatoire

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY 1)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

OU ordre par la colonne

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

ou une partition d'une autre colonne pour redémarrer la séquence

SELECT CALENDAR_DATE
     , YEAR_OF_CALENDAR
     , ROW_NUMBER()
       OVER (PARTITION BY YEAR_OF_CALENDAR
             ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2009-11-01' AND DATE 
;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top