Teradata SQL: sélectionnez un littéral
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.
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
;