J'ai écrit la requête. Ci-dessous, cette requête et une autre p> les deux fonctionnent bien sans erreur. Mais mon problème est si je gère la première requête de la requête 2019 aura 303 et si la deuxième requête d'exécution 269 Données est affichée de 2019 Année. P> Où je me trompe, je ne peux pas trouver le problème s'il vous plaît aidez-moi avec ça . p> p>
3 Réponses :
SELECT PK_C_UP_key FROM C_User_Profile WHERE DATEPART(WEEK, crn_dt) BETWEEN 1 AND (DATEPART(WEEK, @date))
Ma réponse est 269 est correcte seulement. Mais quand j'ajoute groupe par clause, il montre 303 comptes
Vous avez raison, mais si vous limitez-vous à 2019 dans la première sous-requête (et DatePart (année, CRN_DT) = 2019), les résultats de la section de deux requêtes seront les mêmes.
Les conditions ne sont pas équivalentes parce que vous prenez plus de cfk_f_key dans la première requête
Sélectionner Compter (montant) comme nr_sales, DatePart (année, crn_dt) en tant qu'étions De c_payment_service_fee Groupe par datePart (année, crn_dt) p>
vous première requête a: Votre seconde a: p> Vous comparez le nombre de lignes à la somme d'un colonne. Je ne suis pas surpris qu'ils soient différents. P> Je ne sais pas ce que vous voulez, mais je recommanderais d'utiliser ceci pour les deux requêtes: P> SELECT YEAR(crn_dt), COUNT(*) as num_rows,
SUM(amount) as total_amount
Veuillez formater vos requêtes afin que nous puissions les lire. Nous ne devrions pas avoir à le faire pour vous.
Veuillez mettre les données d'échantillonnage et la sortie attendue et le schéma si possible.
"Si la deuxième requête de la deuxième requête 2019 sera 269." I> Que comptent code>? Vous n'avez pas cette fonction dans votre deuxième requête. En outre, pourquoi avez-vous marqué SQL Server 2008 et 2012?
Pour la première requête, vous avez le
compteur (pk_c_psf_key) en tant que nr_sales code>, mais pour le second que vous avezmontant code> comme nr_sales b>, donc il y a Pas de comptage pour le second que vous venez de donner le montant code> code> colonne nr_sales i> alias. Donc, la réponse courte à votre question est la suivante: car il n'y a pas de compte () dans la deuxième requête i>.