J'ai besoin de comparer les enregistrements des Etats-Unis du Royaume-Uni.
Les enregistrements britanniques sur le code à barres et les champs d'entrepôt sont le modèle à suivre ou copié par le Royaume-Uni. P>
Après avoir configuré des enregistrements du Royaume-Uni par groupe de Royaume-Uni, j'aime vérifier en écrivant une requête Les groupes sont des enregistrements de désactivation comme se comparent à celui des États-Unis p>
Veuillez voir l'illustration de la table d'échantillonnage ci-dessous. p> J'écris ce code, mais cette liste Tous les enregistrements et J'ai besoin de vérifier manuellement qui sont une inadéquation (s'il y a des milliers d'enregistrements, ce serait plus difficile). P> Country Item Group Barcode Warehouse
-----------------------------------------
UK Clothes Standard A
USA Clothes Standard B
UK Shoes Standard A
USA Shoes EAN B
4 Réponses :
Vous pouvez essayer d'utiliser la fonction compteur code> dans la sous-requête
Que compte-t-il sur la partition? Quand il y a une inadéquation, c'est un résultant de 1, sinon 2?
@RickyProgrammer divise le résultat de la requête défini en partitions. La fonction de la fenêtre est appliquée à chaque partition séparément et le calcul de l'ordinateur est redémarré pour chaque partition. docs.microsoft.com/en-us/sql/t-sql/queries/...
Dans votre cas, vous souhaitez obtenir le compte par BARCODE code> et Warehouse code> afin que vous puissiez essayer d'utiliser la partition par ces colonnes, puis le compteur code> la fonction comptera par chaque partition séparément
Je vois, donc cela comptera combien de "standard" pour code à barres par exemple dans un groupe de catégories .. Par conséquent, lorsqu'il compte 1, il n'est pas correspondant, sinon, correspondant. et ainsi avec "A" pour entrepôt. droite?
Count (*) Over (Partition par B.Category, A.Warehouse Commerce par catégorie) Code> Il comptera combien de montant dans le groupe de catégorie et entrepôt, car le groupe de catégorie = "cadeau" et code à barres = Le montant du comptage "standard" obtiendra 2, en raison de la même ligne de la même valeur sur code> catégorie code>, de code à barres code> donc je veux obtenir le montant du compte est 1 ligne de données.
est-ce ce que vous voulez?
with d as
(
SELECT a.country, b.category, a.barcode, a.warehouse
FROM Retail a INNER JOIN Category b on a.ID = b.category
WHERE a.country in ('USA', 'UK')
)
select d1.* from d as d1 inner join
(
select a.country, category
from d
group by
a.country, category
having count(distinct barcode)>1 or count(distinct warehouse)>1
) d2
on d1.country=d2.country and d1.category=d2.category
order by
d1.country=d2.country
WITH data AS (
SELECT a.country, b.category, a.barcode, a.warehouse
FROM Retail a INNER JOIN Category b
ON a.ID = b.category
WHERE a.country IN('USA', 'UK')
)
SELECT T1.*
FROM data AS T1
INNER JOIN data AS T2
ON T1.ITEM_GROUP = T2.ITEM_GROUP
AND (T1.BARCODE <> T2.BARCODE
OR T1.WAREHOUSE <> T2.WAREHOUSE)
WHERE (T1.COUNTRY = 'UK' AND T2.COUNTRY = 'USA')
OR (T1.COUNTRY = 'USA' AND T2.COUNTRY = 'UK' )
;
Une légère modification à cela vous permettra de voir les différences dans la même ligne, sans comparer deux rangées différentes
Votre code n'a aucun sens. "Royaume-Uni" est-il une catégorie ou un pays?
Désolé, édité déjà une erreur de tyo. Je viens de créer un exemple d'exemple pas les codes réels