2010-08-04 9 views
0

Salut J'écris un long programme en TSQL qui extrait des données d'un OLD (et un ensemble de données très sale) les données et reformate la sortie, y compris les en-têtes de colonne pour correspondre à un nouvel ensemble de données les deux nouvelles et anciennes tables. Dans le but de tester, j'apporte 100k lignes de chaque. Pour valider que les structures de table et les attributs de champ sont les mêmes, mon boss m'a demandé d'utiliser le TSQL EXCEPT. Je suis arrivé sur notre serveur 2008 et j'ai extrait les données des nouvelles données de la table 2005 et les données des anciennes données archivées de 2008.TSQl EXCEPT validation

Le code que je utilise est la suivante:

SELECT * FROM #NEW_TABLE 
EXCEPT 
SELECT * FROM #OLD_TABLE 

Les sorties SAUF déclaration tous 100k enregistre de la nouvelle table. Serais-je correct que c'est parce qu'il n'y a pas de correspondance dans les données, plutôt que des problèmes de structure de table car je ne reçois aucune erreur du tout.

Répondre

0

Oui - pour autant que je comprends que vous obtenez tous les enregistrements sur la nouvelle table, car aucun d'entre eux correspondent à ceux sur l'ancienne table (but de SAUF)

0

C'est exact, mais cela dépend de ce que vous entendez par "match".

Pour que EXCEPT fonctionne, toutes les colonnes doivent correspondre des deux tables afin de pouvoir être supprimées du jeu de résultats. Cela signifie que si vous avez quelque chose qui ressemble à:

ID Name Salary 
--- ------ ------ 
1 John 550k 
2 Sue 500k 
3 Bill 40k 

et que vous utilisez SAUF ce qui suit:

ID Name Salary 
--- ------ ------ 
1 John 520k 

Vous verrez toujours que votre sortie:

ID Name Salary 
--- ------ ------ 
1 John 550k 
2 Sue 500k 
3 Bill 40k 
+0

Je veux dire correspondance comme dans la structure de la table, l'ordre des champs et les attributs des champs sont tous les mêmes, pas les données elles-mêmes. – JMS49

+0

C'est une requête complètement différente alors. Vous devriez sélectionner sys.columns faisant référence aux deux tables et faire un EXCEPT sur ces résultats à la place. SAUF ne fonctionnera même pas si le nombre de colonnes ne correspond pas, mais il ne peut pas vous dire beaucoup plus que cela. –