0
votes

Query SQL pour comparer les archives de désaccordement

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> xxx pré>

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


2 commentaires

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


4 Réponses :


4
votes

Vous pouvez essayer d'utiliser la fonction compteur dans la sous-requête xxx


5 commentaires

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 et Warehouse afin que vous puissiez essayer d'utiliser la partition par ces colonnes, puis le compteur 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) 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 catégorie , de code à barres donc je veux obtenir le montant du compte est 1 ligne de données.



2
votes

est-ce ce que vous voulez? XXX


0 commentaires

0
votes
    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

0 commentaires

0
votes
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' )
;

1 commentaires

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