2017-10-02 6 views
0

J'ai cette requête SQLUtiliser filtre WHERE dans la dynamique AOT Interrogation

SELECT 
TT.RECID, 
TT.TRANSDATE, 
TT.DATAAREAID, 
TT.SOURCERECID, 
TT.SOURCEBASEAMOUNTCUR, 
TT.SOURCETAXAMOUNTCUR, 
TTGJAERIVA.TAXTRANSRELATIONSHIP, 
TTGJAERIVA.GENERALJOURNALACCOUNTENTRY, 
TTGJAERIVA.LEDGERDIMENSION, 
GJAERIVA.TEXT, 
GJAERIVA.LEDGERDIMENSION AS LEDGERDIMENSIONGAE, 
GJAERIVA.POSTINGTYPE 
FROM TAXTRANS TT 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TT.RECID 
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN(14,236,71,41) 
WHERE 
(TT.TAXORIGIN <> 11 AND TT.TRANSDATE BETWEEN '2016-06-30' AND '2017-06-30') OR (TT.TAXORIGIN = 11 AND TT.TRANSDATE BETWEEN '2017-06-01' AND '2017-06-30') 

Toute ma requête est juste à l'exception de la clause WHERE, comment puis-je appliquer la clause where à l'aide de requêtes AOT?

Dans ce article, ils appliquent la clause Where, mais ils n'expliquent pas comment ils le font.

requête actuelle

enter image description here

Note: Si quelque chose ne va pas avec ma question s'il vous plaît laissez-moi savoir ce que est-il. Cordialement

+1

L'article que vous avez lié l'explique un peu (en commençant par le paragraphe commençant par "Comment cela peut-il être fait?"), Mais omet de mentionner que cette technique est communément appelée "expressions de requête". Ils sont documentés [ici] (https://msdn.microsoft.com/de-de/library/aa893981.aspx), mais je préfère [l'article d'Axaptapedia] (http://www.axaptapedia.com/Expressions_in_query_ranges). –

+0

Les informations de l'article Axaptapedia lié vous seront utiles si vous créez la requête dans X ++. Vous pouvez l'utiliser si vous ajoutez la plage à votre objet de requête AOT après l'avoir déclaré dans le même code que celui où vous souhaitez l'utiliser. Si vous devez tout faire dans l'AOT, vous devrez modifier la structure de votre requête pour joindre deux buffers de la table TaxTrans afin de satisfaire la clause OR. – SShaheen

Répondre

1

Vous devez ajouter une nouvelle gamme à la source de données TaxTrans_1 - vous pouvez utiliser le champ RecId, il n'a pas d'importance. Ensuite, vous pouvez utiliser la valeur suivante dans cette gamme:

((TaxOrigin != 11) && (TransDate >= 30\06\2016) && (TransDate <= 30\06\2017)) || ((TaxOrigin == 11) && (TransDate >= 02\06\2017) && (TransDate <= 30\06\2017)) 

Voir Axaptapedia pour plus de détails et d'exemples.