2015-11-10 60 views
-1

我知道我的問題是不是很合乎邏輯,但我有如下因素chalenge:SQL內連接顯示數值一旦

HeadTab (Uniq_Id N(10) 
     Name C(30) 
     Tax N(18,2)) 

TrsTab (Uniq_Id N(10) 
     MonthlyDesc C(20) 
     Amount N(18,2)) 

我要的是以下select * from headtab inner join Trstab on uniq_id = Uniq_id

的問題是,我想每個名稱只能查看一次稅務字段,其他相關的應該是0 ...(儘管我在細節選項卡中有很多行)。

感謝您的幫助

+1

有很多方法可以做到這一點。頂部,不同,最大/最小/其他聚合。從你發佈的內容來看,實際上不可能提供更多的幫助。 –

+0

爲什麼你不想看到每行的稅值?以及您要按照哪個行來確定哪個行是每個Name的第一行? – JamieD77

+0

基於名稱查看相同稅務字段的一種方法是使用子查詢。 –

回答

0

如果你給查詢行數來確定每個名稱的第一行,你可以使用一個case語句來選擇你想爲哪個稅務價值。

SELECT 
    ht.Uniq_ID, 
    ht.NAME, 
    (CASE WHEN ROW_NUMBER() OVER (PARTITION BY ht.NAME ORDER BY ht.Uniq_ID) = 1 THEN ht.Tax ELSE 0 END) Tax, 
    tt.* 
FROM 
    headtab ht 
    INNER JOIN Trstab tt ON ht.uniq_id = tt.Uniq_id