Google ne m'a pas aidé ici et n'a pas encore d'aide en ligne Microsoft.LEFT JOIN sur les tables en ligne
J'ai des tables Inline qui sont générées en tant que sous-requête. (Voir le code simplifié ci-dessous, j'ai plusieurs autres tables en ligne.)
Maintenant, c'est très bien où j'ai des données. Cependant, il y a des cas où je dois retourner des résultats quand il n'y a pas de données. Par exemple, Inline table 1 renvoie mon nombre de clients actifs ... Si je spécifie une plage où il n'y a pas de clients actifs, je n'obtiens aucun résultat pour l'ensemble de la requête.
Cela est dû à mon join (ET = IL1.transaction_id th.transaction_id)
Comment puis-je joindre à la table à gauche en ligne?
J'ai essayé LEFT JOIN IL1 sur il1.transaction_id = th.transaction_id mais il dit que la table n'existe pas.
select SUM(th.total_net_retail_central) as 'Net Purchases TY',
IL1.Active as 'Number of Active Customers TY',
COUNT(th.transaction_id) as 'Number of Transactions TY'
FROM
(SELECT transaction_type, COUNT(DISTINCT customer_id) as 'Active' from transaction_header
where transaction_date BETWEEN @Active and @ToDate group by transaction_type)IL1,
transaction_header th
INNER JOIN transaction_type tt ON th.transaction_type = tt.transaction_type
WHERE
th.transaction_date Between @FromDate AND @ToDate
AND IL1.transaction_type = th.transaction_type
GROUP BY
tt.transaction_type_description, IL1.Active
Toute aide est vraiment appréciée.
"ENTRE @Active et @ToDate" semble mal là-bas. –
Pouvez-vous poster la requête que vous avez essayé avec la jointure gauche qui n'a pas fonctionné s'il vous plaît? – StevenWilkins
Cela fonctionne comme si, par exemple, ma date est le 1er janvier, ma date est le 30 octobre et ma date active est le 5 avril, je reçois nombre de clients actifs entre le 5 avril et le 30 octobre, mais mes autres résultats vont du 1er janvier au 30 octobre. Cependant, s'il n'y a pas eu de cutomers actifs cela va générer un null et ma jointure sera nulle donc je n'obtiens aucun résultat globalement ... vous voyez? –