2017-10-10 46 views
0

Je souhaite exporter des données spécifiques de ma base de données et les importer dans d'autres tables de base de données. Généralement toutes les données sont dans une table, mais il y a quelques données additionnelles dans d'autres tables. La plupart des autres tables ont un seul enregistrement des données requises, mais certaines tables ont plusieurs enregistrements requis. Par exemple:Exportation et importation de lignes sélectionnées

Case 
------------------ 
ID name status Sum 
1 first 2  854 
2 second 4  NULL 
3 third 6  951 
4 fourth 2  1430 

Payments 
---------------------------- 
CaseID Person payment 
1  Peter 35 
1  Robert 48 
3  Oscar 630 
4  Rob  85 
3  Oscar 130 

Documents 
----------------------------- 
CaseId DocTypeId RegNr 
1  3   14335 
1  4   43456 
1  1   34533 
2  5   23454 
2  3   35532 

J'ai besoin d'exporter tous les cas qui n'ont pas le statut « 6 » et je besoin de leurs paiements et les documents qui peuvent être plus d'un. Je pourrais joindre des tables, mais ces tables avec plusieurs enregistrements requis créeraient des lignes supplémentaires avec les mêmes données de colonne.

With join I could get something like this 
ID name status Sum CaseId Person payment CaseId DocTypeId RegNr 
1 first 2  854 1  Peter 35  1  3   14335 
1 first 2  854 1  Robert 48  1  4   43456 
1 first 2  854 1  Peter 35  1  1   34533 

Ici, vous pouvez voir que comme cela, j'obtiendrais des données en double. Comment puis-je obtenir les données sans doublons? Par exemple toutes les données dans une rangée?

Je ne souhaite pas importer de données en double dans une base de données car cela serait vraiment mauvais. Comment puis-je y parvenir?

J'ai essayé de regarder quelques possibilités de serveur de sql mais n'ai pas pu trouver ce dont j'ai besoin, ainsi je suppose que j'ai besoin de créer mon propre manuscrit.

+2

Pouvez-vous poster la requête que vous utilisez et aussi les résultats souhaités? Ce n'est pas clair ce que vous dites avec les mots 'some' et' most'. –

+0

Case ID 1 est défini pour Peter et Robert - il est donc correct que - si vous vous joignez à l'ID de cas - vous recevez deux lignes ... s'il vous plaît poster la requête de jointure que vous avez utilisé. – Tyron78

+0

Je n'ai pas encore créé toute la requête, je pense simplement à la façon dont je peux répondre à mes besoins, car je ne vois pas comment faire cela maintenant. Mais pour l'ID de cas 1 qui crée des doublons qui ruineront les données après l'importation. – Rudolfs

Répondre

0

Je suppose que vous obtenez le résultat souhaité dans votre sortie de table de jointure, sauf qu'il vous donne des doublons. Vous pouvez facilement ignorer les doublons et insérer une seule ligne dans votre tableau de sortie.

Créez une vue qui vous donnera le classement des doublons.

CREATE view View1 as(select *,ROW_NUMBER() OVER(partition by names, status, some, person, payment Order by id) as rn from Your_join_table) 

après entrez simplement le rang 1 des lignes à votre table de sortie

select * into output_table from View1 where rn = 1 

Hope it helps!

+0

Je suis un peu confus car je n'ai pas utilisé de vues (assez nouveau pour les bases de données). Comment puis-je importer toutes les données requises par ceci? N'aurais-je pas besoin de faire toutes les lignes manuellement? Puis-je importer toutes les données sans rien perdre? – Rudolfs

+0

Les vues sont la table virtuelle, donc vous créez une table temporaire pour obtenir toutes les lignes dont vous avez besoin. Une fois que vous l'avez, il vous suffit d'obtenir les lignes uniques dont vous avez besoin. La table de jointure que vous avez publiée contient-elle toutes les données dont vous avez besoin? Si oui, suivez mes instructions. Vous êtes très proche! – sbiswas

+0

Ceci est une version simplifiée de ce dont j'ai besoin, je dois obtenir des données à partir de plusieurs tables. Je vais essayer de créer la requête entière et voir si je peux obtenir toutes les colonnes requises de toutes les tables dans ma table de jointure. Merci pour cela, je vais essayer de le créer. – Rudolfs