2016-01-27 1 views
2

J'ai besoin de remplir ma table de faits avec les données du tableau lds_placement. J'ai sélectionné les dossiers et voici à quoi il ressemble:Insertion SQL dans select from - insérer l'ID au lieu des données

fk1_account_id | fk3_job_role_id | salary | no_of_placements | YEAR 
--------------------------------------------------------------------- 
    10  |  3  | 165000 |  5   | 2010 
    10  |  3  | 132000 |  4   | 2011 
    10  |  3  | 132000 |  4   | 2012 
    20  |  2  | 990000 |  3   | 2010 
    20  |  2  | 132000 |  2   | 2011 
    20  |  2  | 132000 |  2   | 2012  

Je veux insérer time_id d'une autre table appelée time_dim dans la colonne year et non l'année elle-même.

Le tableau time_dim ressemble à ceci:

time_id | year 
--------------- 
    5 | 2015 
    1 | 2013 
    2 | 2010 
    3 | 2014 
    4 | 2012 
    6 | 2011 

je dois insérer dans la colonne « année » est en fait:

year 
2 
6 
4 
2 
6 
4 

S'il vous plaît me donner le moyen d'insérer time_id au lieu de year dans le table. Voici le code que j'ai utilisé pour sélectionner le tableau le plus haut.

SELECT 
    fk1_account_id, 
    fk3_job_role_id, 
    Sum(actual_salary)        AS salary, 
    Count(1)          AS no_of_placements, 
    MAX(EXTRACT(YEAR FROM plt_estimated_end_date)) AS year 
    FROM lds_placement 
GROUP BY fk1_account_id, fk3_job_role_id, EXTRACT(YEAR FROM plt_estimated_end_date) 
ORDER BY fk1_account_id; 

Répondre

1

Utilisez un left join si vous voulez capturer les enregistrements où year n'existe pas dans time_dim. Sinon, utilisez inner_join.

select t.fk1_account_id,t.fk3_job_role_id,t.salary,t.no_of_placements 
,d.time_id 
from 
(SELECT fk1_account_id, fk3_job_role_id, Sum(actual_salary) as salary, Count(1) as no_of_placements, MAX(EXTRACT(YEAR FROM plt_estimated_end_date)) AS YEAR 
FROM lds_placement 
GROUP BY fk1_account_id, fk3_job_role_id, EXTRACT(YEAR FROM plt_estimated_end_date) 
)t 
left join time_dim d 
on t.year=d.year 
order by t.fk1_account_id 
+1

Merci beaucoup. Vous avez nettoyé mon mal de tête d'un jour. :) – DazedNConfused