Um zu verhindern, dass mehrere schließt sich an einen Tisch zu tun, können Sie UNPIVOT, verbinden und dann schwenken (dann, wenn Sie 50 ID-Spalten hatte würden Sie nur noch ausführen müssen, eine Join):
SQL Fiddle
Oracle 11g R2 Schema Einrichtung:
CREATE TABLE Tech_data (Id, Tech, Agent1_id, Agent2_ID) AS
SELECT 1, 'JAVA', 1, 2 FROM DUAL UNION ALL
SELECT 2, 'SQL', 3, 4 FROM DUAL;
CREATE TABLE Agent_table (Id, Name) AS
SELECT 1, 'Mike' FROM DUAL UNION ALL
SELECT 2, 'John' FROM DUAL UNION ALL
SELECT 3, 'Jim' FROM DUAL UNION ALL
SELECT 4, 'Baron' FROM DUAL;
Abfrage 1:
SELECT *
FROM (
SELECT t.id,
t.tech,
t.num,
a.name
FROM (
SELECT *
FROM tech_data
UNPIVOT (Agent_ID FOR num IN (Agent1_id AS 1, Agent2_id AS 2))
) t
INNER JOIN Agent_table a
ON (t.agent_id = a.id)
)
PIVOT (MAX(name) FOR num IN (1 AS Agent1_Name, 2 AS Agent2_Name))
Results:
| ID | TECH | AGENT1_NAME | AGENT2_NAME |
|----|------|-------------|-------------|
| 1 | JAVA | Mike | John |
| 2 | SQL | Jim | Baron |
Es sieht aus wie Sie K Vereinigung wählt für Ihre K-Spalten. In diesem Fall K = 2. Zeigen Sie uns auf eine Geige, damit wir Details eingeben können: http://sqlfiddle.com/ –