J'écris un rapport sur Excel qui interrogeant des données d'une table ODBC.
Je souhaitais créer une nouvelle colonne pour obtenir des critères de recherche et l'utiliser dans ma clause Why où. Par exemple: P>
SELECT SO_Site, SO_Customer, IIF((SO_PERFORM_DATE)<GetDate(),'Backlog','Normal') AS 'ISBACKLOG' FROM WAREHOUSE.FAKESALESORDES WHERE SO_Site=1234 AND ISBACKLOG='Backlog'
3 Réponses :
Ce dont vous avez besoin est une déclaration code> code>, par exemple: Vous pouvez en savoir plus sur
Merci. Je reçois: [Microsoft] [pilote ODBC SQL Server] [SQL Server] Nom de colonne invalide 'isbacklog'. Cela pourrait-il être dû uniquement à avoir lu l'accès au serveur ODBC?
Colonne IsBackLog n'existe pas dans le lieu où l'endroit où est exécuté avant le champ Select
@Bestter merci, j'ai oublié ça!
Il y a bien sûr des façons autour de cela. Mais vous devez apprendre à marcher avant d'essayer de courir. Cela ne gratte pas la surface du complexe ou du désordre! Mais vous pouvez utiliser un CTE dans de nombreux cas pour réduire la complexité visuelle ou la duplication. Exemple: démo comme Fiddle . Vous pouvez également envisager d'utiliser une vue ou un calculée colonne p> p>
Vous ne pouvez pas faire référence à un alias nommé dans son propre Vous devez simplement mettre l'ensemble où code> comme ça. iif code> dans le dans le où instruction de la même manière que dans le Sélectionnez CODE> P> SELECT
SO_Site,
SO_Customer,
IIF((SO_PERFORM_DATE)<GetDate(),'Backlog','Normal') AS 'ISBACKLOG'
FROM
WAREHOUSE.FAKESALESORDES
WHERE
SO_Site=1234
AND SO_PERFORM_DATE<GetDate()
IIF est une chose excessif (et accès) -pecific afaik. Dans la plupart des dialectes SQL, vous utiliseriez probablement une déclaration de cas à la place. Cela pourrait dépendre de quel type de base de données vous vous connectez.
La réponse courte est - vous ne pouvez pas. Logiquement, la clause WHERE est appliquée avant le calcul de IsBackLog de sorte que la colonne n'existe pas. Cependant, vous savez exactement quelles lignes qualifiées pour
isbackup = 'Backlog' code> de sorte que l'approche facile consiste à déplacer cette logique dans la clause WH oùoù ... et so_perform_date. Et s'il vous plaît utilisez des espaces et le formatage des espaces pour rendre votre code plus lisible. Vous et quelqu'un d'autre que vous travaillez, vous apprécierez cet effort.