Comment réutiliser une colonne de résultat dans une expression par une autre colonne de résultat

Exemple:

SELECT
   (SELECT SUM(...) FROM ...) as turnover,
   (SELECT SUM(...) FROM ...) as cost,
   turnover - cost as profit

Sûr que ce n'est pas valide (au moins dans Postgres) mais comment atteindre le même dans une requête sans avoir à réécrire la sous-requête deux fois?

  • Dépend des détails, tels que les colonnes & tables impliquées.
  • Ponis: Comme? N'est-ce pas là une manière générale pour tel?
  • Je suis d'accord avec @OMG. Cela dit, si vous pouvez écrire une sous-requête qui renvoie à la fois turnover et cost que les colonnes, la requête enveloppé autour de cette sous-requête peut effectuer turnover - cost. Pour plus de détails, nous allons avoir besoin de quelques détails au sujet de votre schéma.
  • Pensez aussi à utiliser des "expressions de table communes" aka CTE. Voir stackoverflow.com/questions/2686919/... et postgresql.org/docs/8.4/static/queries-with.html
  • Édité le titre: cette question ne met pas l'accent sur la réutilisation de sous-requêtes (tables), mais plutôt de simples colonnes, à la différence de stackoverflow.com/q/2686919/648265 .
  • Voir également la réponse à cette question comment utiliser les alias dans le calcul SELECT 10 AS my_num, (SELECT my_num) * 5 AS another_number FROM table

InformationsquelleAutor Wernight | 2010-11-18