2010-10-15 7 views
-4

Possible en double:
How to join two tablesjoignant deux tables

Tableau 1

Date   StartingAum 

07/01/2010  120 
08/01/2010  220 
09/01/2010  320 

Tableau 2

Date   DepContr withdra  
01/01/2010  60   15 
02/01/2010  70   25 
03/01/2010  80   15 
04/01/2010  30   89 
05/01/2010  40   15 
06/01/2010  25   85 
07/01/2010  16   17 
08/01/2010  19   21 
09/01/2010  68   79 

la sortie doit être

Date   StartingAum  DepContr withdra  
01/01/2010  0    60   15 
02/01/2010  0    70   25 
03/01/2010  0    80   15 
04/01/2010  0    30   89 
05/01/2010  0    40   15 
06/01/2010  0    25   85 
07/01/2010  120    16   17 
08/01/2010  220    19   21 
09/01/2010  320    68   79 

i besoin de la sortie exactement similaire à celle

+1

Il est inapproprié pour vous de demander à plusieurs reprises comment générer des ensembles de résultats. Apprenez de votre [question précédente] (http://stackoverflow.com/questions/3945837/how-to-join-two-tables), demandé même il ya une heure. –

+1

-1 pour les questions similaires si rapprochées dans le temps. Tir rapide Q et A pourrait être plus approprié dans un IRC (salon de discussion). Google "IRC sql". Vous pouvez avoir un dialogue là-bas qui pourrait être vraiment utile. – orolo

+1

Bienvenue sur stackoverflow! Certaines personnes sont un peu grincheuses parfois, ignorez-les et posez vos questions. –

Répondre

2
DECLARE @Table1 table ([date] datetime, StartingAum int) 
DECLARE @Table2 table ([date] datetime, DepContr int, withdra int) 
INSERT @Table1 VALUES ('07/01/2010',  120) 
INSERT @Table1 VALUES ('08/01/2010',  220) 
INSERT @Table1 VALUES ('09/01/2010',  320) 

INSERT @Table2 VALUES ('01/01/2010',  60 ,   15) 
INSERT @Table2 VALUES ('02/01/2010',  70 ,   25) 
INSERT @Table2 VALUES ('03/01/2010',  80 ,   15) 
INSERT @Table2 VALUES ('04/01/2010',  30 ,   89) 
INSERT @Table2 VALUES ('05/01/2010',  40 ,   15) 
INSERT @Table2 VALUES ('06/01/2010',  25 ,   85) 
INSERT @Table2 VALUES ('07/01/2010',  16 ,   17) 
INSERT @Table2 VALUES ('08/01/2010',  19 ,   21) 
INSERT @Table2 VALUES ('09/01/2010',  68 ,   79) 


SELECT 
    t2.[Date] 
     ,ISNULL(t1.StartingAum, 0) AS StartingAum  
     ,t2.DepContr 
     ,t2.withdra 
    FROM @Table2   t2 
     LEFT JOIN @Table1 t1 ON t2.[Date] = t1.[Date] 
    ORDER BY t2.[Date] 

SORTIE:

Date     StartingAum DepContr withdra 
----------------------- ----------- ----------- ----------- 
2010-01-01 00:00:00.000 0   60   15 
2010-02-01 00:00:00.000 0   70   25 
2010-03-01 00:00:00.000 0   80   15 
2010-04-01 00:00:00.000 0   30   89 
2010-05-01 00:00:00.000 0   40   15 
2010-06-01 00:00:00.000 0   25   85 
2010-07-01 00:00:00.000 120   16   17 
2010-08-01 00:00:00.000 220   19   21 
2010-09-01 00:00:00.000 320   68   79 
+0

La colonne startingAum renvoie tous les 0 – rakesh

+1

startingAum renvoie un zéro si sa valeur Table1 est zéro ou si la ligne correspondante n'est pas dans Table2. S'il y a des moments sur l'une de ces valeurs de date (comme '2010-01-01 13: 45: 23.123') alors ils doivent être exactement les mêmes ou la jointure ne trouvera pas de correspondance et startingAum sera zéro. Si les dates ont du temps, changez la ligne 'LEFT JOIN' en:' LEFT JOIN @ Table1 t1 ON DATEADD (jour, DATEDIFF (jour, 0, t2. [Date]), 0) = DATEADD (jour, DATEDIFF (jour, 0, t1. [Date]), 0) 'et il se joindra uniquement à la date et non à l'heure. –

+0

si elles sont des tables @temp variables ou des tables temptb #temp réelles ne devraient pas importer, il suffit de changer 'FROM @ Table2 t2' à' FROM # Table2 t2' et 'LEFT JOIN @ Table1 t1' à' LEFT JOIN # Table1 t1' et vous devriez être bon à faire. –

0

Je pense que vous devriez jeter un oeil à cette page: http://www.w3schools.com/sql/sql_union.asp Ce pourrait être utile?

+0

désolé ma réponse n'est peut-être pas la meilleure, mais j'ai besoin d'une meilleure explication de ce que vous essayez de calculer avant de pouvoir vous aider à construire le SQL nécessaire. Je vois que d'autres réponses le font déjà, alors je vais attendre pour voir si d'autres réponses sont nécessaires ou non. Désolé pour le lien boiteux. – BerggreenDK