6
votes

Puis-je écrire une requête a une sélection de table conditionnelle

Nous avons 2 tables avec une structure identique et basée sur une variable, je souhaite choisir la table à sélectionner sans avoir à écrire 2 requêtes dans ma procédure.

est-ce possible?

i essayé xxx

mais cela n'a pas fonctionné


0 commentaires

3 Réponses :


7
votes

Vous auriez besoin d'utiliser SQL dynamique pour cela (en supposant que vous souhaitiez l'amplifier à plus de 2 tables), ce qui fonctionnerait, mais est sous-optimal car SQL ne générera pas de statistiques pour elle et d'optimiser la requête. xxx

ou, dans une procédure stockée: xxx


1 commentaires

J'essayais d'éviter d'écrire un SP pour une exécution d'une fois, ce qui semble être la solution que je consiste à faire parce que le résultat final est plus compliqué que l'échantillon facile que j'ai mis en place.



3
votes

Une option est d'utiliser Dynamic SQL, mais si la performance n'est pas un problème immédiat, beaucoup plus simple est de simplement union code> les tableaux et ajoutez un mannequin [table] code> colonne Pour choisir parmi.

SELECT orderID, Quantity
FROM   (
  SELECT [table] = 1, orderID, Quantity
  FROM   tblOrders
  UNION ALL
  SELECT [table] = 2, orderID, Quantity
  FROM   tblSubscriptionOrders
  ) t
WHERE t.Table = @table


0 commentaires

5
votes

Si ce n'est que deux tables, vous pouvez faire:

Declare @table = 1

SELECT *
FROM Table1
WHERE <stuff>
AND @Table = 1

UNION ALL

SELECT *
FROM Table2
WHERE <stuff>
AND @Table = 2


1 commentaires

+1 Non testé mais je suppose que ce serait la solution la plus rapide encore présentée.