2016-04-01 18 views
0

Ich habe zwei Tabellen, die verbunden werden müssen.Kombinieren Sie zwei Tabellen ohne den Wert der zweiten Tabelle

Beispiel:

Table 1: tbl_Item 

Id ---- ItemName 

1 ----- A<br/> 
1 ----- B<br/> 
1 ----- c<br/> 
2 ----- A<br/> 
2 ----- B<br/> 


Table 2: tbl_Detail 

Id ---- Total 

1 ---- 100 <br/> 
2 ---- 300<br/> 

Ich brauche die Tabellen zu verknüpfen und erhalten folgendes Ergebnis:

Id -- ItemName -- Total 

1 -- A ---  Null<br/> 
1 -- B ---  Null<br/> 
1 -- C ---  100<br/> 
2 -- A ---  Null<br/> 
2 -- B ---  300<br/> 

Vielen Dank im Voraus.

+1

Bitte erläutern Sie die Regeln. Hinweis: SQL-Tabellen stellen * ungeordnete * Mengen dar, daher gibt es keine erste oder letzte Zeile in einer Gruppe. –

+0

Sie können "Join" -Eigenschaft von SQL verwenden ... Siehe diesen Link http://www.w3schools.com/sql/sql_join.asp – Shiv

+0

@Jay können Sie mir sagen, warum Sie Single "ID" für viele "Element Name "... – Shiv

Antwort

0

Sie können ordnen Sie den total Wert auf einen unbestimmtenrow_number() unter Verwendung einreihig:

select t.id, t.ItemName, 
     (case when row_number() over (partition by t.id order by (select NULL)) = 1 
      then d.total 
     end) as total 
from tbl_item t join 
    tbl_detail d 
    on t.id = d.id; 

Wenn Sie eine Bestellung haben (wahrscheinlich angegeben durch eine andere Spalte), dann ersetzen (select null) mit der entsprechenden Logik. Für die Beispieldaten könnten Sie beispielsweise i.name desc verwenden, aber ich bezweifle, dass dies die tatsächliche Reihenfolge ist, nach der Sie suchen.

+0

Danke ... es ist Arbeit – Jay

0

Sie ROW_NUMBER dafür verwenden könnte:

;WITH CTE AS (
    SELECT Id, ItemName, 
      ROW_NUMBER() OVER (PARTITION BY Id ORDER BY ItemName DESC) AS rn 
    FROM tbl_Item 
) 
SELECT t1.Id, t1.ItemName, 
     CASE WHEN t1.rn = 1 THEN t2.Total END AS Total 
FROM CTE AS t1 
LEFT JOIN tbl_Detail AS t2 ON t1.Id = t2.Id 
Verwandte Themen