J'essaie de retourner une liste des (numéros d'identification de marchands) qui ont un nombre total de transactions de zéro au cours des six derniers mois (dans le contexte, la liste médiane où transactions = 0 au cours des six derniers mois) mais ont Ouvert il y a plus de 6 mois.
Avec ma requête actuelle, je constate que certaines de ces personnes ont zéro transaction dans le dernier mois, mais leur total au cours des 6 derniers mois est supérieur à zéro. p>
Je pense que le problème peut être trouvé quelque part autour de la déclaration où, mais je ne sais pas comment corriger cela. P>
SELECT MERCHANTS.MID, MERCHANTS.DBA_NAME, MERCHANTS.OPEN_DATE, SUM(TRANSACTIONS) as 'Transactions Last 6 Months' FROM [RESIDUAL_STAGE].[dbo].[BI_DATA_MAP_201906] INNER JOIN MERCHANTS ON BI_DATA_MAP_201906.MID = MERCHANTS.MID INNER JOIN LK_BI_LEAD_SOURCE ON MERCHANTS.BI_LEAD_SOURCE = LK_BI_LEAD_SOURCE.LBLS_ROW_ID INNER JOIN LK_BI_PORTFOLIO ON MERCHANTS.BI_PORTFOLIO = LK_BI_PORTFOLIO.LBPORT_ROW_ID INNER JOIN LK_BI_PROCESSOR ON MERCHANTS.BI_PROCESSOR = LK_BI_PROCESSOR.LBP_ROW_ID INNER JOIN LK_BI_SALES_AGENT ON MERCHANTS.BI_SALES_AGENT = LK_BI_SALES_AGENT.LBSA_ROW_ID INNER JOIN LK_BI_SALES_CHANNEL ON MERCHANTS.BI_SALES_CHANNEL = LK_BI_SALES_CHANNEL.LBSC_ROW_ID WHERE LK_BI_SALES_CHANNEL.LK_BI_SALES_CHANNEL_DESC = 'Beacon' AND datediff(month, RESIDUAL_PERIOD, getdate()) <= 6 AND TRANSACTIONS = 0 AND datediff(month, MERCHANTS.OPEN_DATE, getdate()) > 6 GROUP BY MERCHANTS.MID, MERCHANTS.DBA_NAME, MERCHANTS.OPEN_DATE ORDER BY MERCHANTS.DBA_NAME asc
3 Réponses :
J'essaie de retourner une liste d'individus qui ont un nombre total de transactions de zéro au cours des six derniers mois (dans le contexte, la liste médiane où transactions = 0 au cours des six derniers mois). P>
Je vais ignorer votre requête. P>
L'idée de base est la suivante: p>
xxx pré> Ceci utilise la syntaxe standard SQL. Les fonctions de date sont susceptibles d'être différentes sur votre base de données. P> blockQquote>
Je pense que vous voulez que la somme des transactions soit zéro? Voir si cela fonctionne:
SELECT MERCHANTS.MID, MERCHANTS.DBA_NAME, MERCHANTS.OPEN_DATE, SUM(TRANSACTIONS) as Transactions_Last_6_Months FROM [RESIDUAL_STAGE].[dbo].[BI_DATA_MAP_201906] INNER JOIN MERCHANTS ON BI_DATA_MAP_201906.MID = MERCHANTS.MID INNER JOIN LK_BI_LEAD_SOURCE ON MERCHANTS.BI_LEAD_SOURCE = LK_BI_LEAD_SOURCE.LBLS_ROW_ID INNER JOIN LK_BI_PORTFOLIO ON MERCHANTS.BI_PORTFOLIO = LK_BI_PORTFOLIO.LBPORT_ROW_ID INNER JOIN LK_BI_PROCESSOR ON MERCHANTS.BI_PROCESSOR = LK_BI_PROCESSOR.LBP_ROW_ID INNER JOIN LK_BI_SALES_AGENT ON MERCHANTS.BI_SALES_AGENT = LK_BI_SALES_AGENT.LBSA_ROW_ID INNER JOIN LK_BI_SALES_CHANNEL ON MERCHANTS.BI_SALES_CHANNEL = LK_BI_SALES_CHANNEL.LBSC_ROW_ID WHERE LK_BI_SALES_CHANNEL.LK_BI_SALES_CHANNEL_DESC = 'Beacon' AND datediff(month, RESIDUAL_PERIOD, getdate()) <= 6 AND datediff(month, MERCHANTS.OPEN_DATE, getdate()) > 6 GROUP BY MERCHANTS.MID, MERCHANTS.DBA_NAME, MERCHANTS.OPEN_DATE HAVING SUM(TRANSACTIONS) = 0 ORDER BY MERCHANTS.DBA_NAME asc
Pour les conditions des agrégations (somme, avg, etc.), vous devez utiliser et remplacez-le par (après votre condition d'utilisation): p> avoir code> au lieu de où code> mot-clé. Donc, supprimez-le de votre où code> condition:
Merci à tous pour les réponses. C'était particulièrement utile en raison des informations sur l'avoir et où les mots-clés.
Votre question est totalement incertaine. Eh bien, la question a du sens. Que doit faire la requête avec quoi que ce soit? Vous posez des questions sur les individus. Il n'y a pas d'individus dans la requête. Vous posez des questions sur une seule «date de transaction». Je ne vois aucune des transactions ni une date claire dans la requête. Aussi tag avec une base de données.
Je m'excuse; Je vais ajouter du contexte à la question.