J'ai une requête comme ce qui suit:Declare en PL/SQL pour une partie de la requête
select t1.varid, t1.var1, t1.var2, t1.vardata, t2.varid, t2.var1, t2,.var2
from table1 t1, table2 t2
where t1.varid = t2.varid
and t1.vardata between to_date('20170807','YYYYMMDD') and to_date('20170808','YYYYMMDD')
Maintenant, la question est la suivante: je dois extraire les données non seulement dans la plage de données spécifiées dans la requête ci-dessus, mais je veux extraire de nombreuses autres plages dans la même requête. Pour ce faire, j'ai utilisé UNION ALL
et cela fonctionne. Le problème est que je dois réécrire cette partie plusieurs fois:
select t1.varid, t1.var1, t1.var2, t1.vardata, t2.varid, t2.var1, t2, var2
from table1 t1, table2 t2
where t1.varid = t2.varid
Y at-il une astuce pour savoir comment définir select t1.varid...
comme une variable nommée afin d'éviter une longue ennuyeuse requête répétée?
Toutes les autres solutions sont les bienvenues.
Pas dans au moins 'SQL'. Vous pouvez également écrire une procédure et passer une plage de dates pour obtenir la sortie souhaitée. – XING
Salut XING, je ne comprends pas: n'est-il pas possible de: définir (sélectionner var1, var2, ... de table) comme variable de nom? Il semble très étrange ... – user1010441
Je voulais dire, vous ne pouvez pas éviter long ennuyeux 'UNION ALL '. Aussi quel est le problème lorsque vous mettez une clé OR avec intervalle de temps différent dans votre requête. – XING