2010-05-11 185 views
0

我想知道是否有一種方法使用TSQL連接語句(或任何其他可用選項)只顯示某些值。我會盡力解釋我的意思。連接返回的重複值

我的數據庫有一個叫做Job,consign,dechead,decitem的表。作業,委託和中斷將只有一條記錄每條記錄,但分隔可以有多條記錄,所有記錄都與外鍵相關聯。我正在寫一個查詢,從每個表中拉出各種值。除了decitem以外的所有表格都可以。從頭到尾,我需要提取一個發票價值,並且從分支中取出淨重。當結果返回時,如果dechead有多個子分割表,它將顯示來自兩個表的所有值。我需要做的只是一次顯示dechad值,然後顯示所有的decitems值。

例如

1 |123|£2000|15.00|1

2 | - | ------ |20.00|2

3 | - | ------ |25.00 | 3

第1行顯示來自dechead的第一行/第一行的值。第2行和第3行僅顯示來自分行的值。如果我然後將查詢導出爲ex​​cel,那麼我在第2行和第3行的前兩個文件中沒有重複值。

例如,

1 |123|£2000|15.00|1

2 |123|£2000|20.00|2

3 |123|£2000|25.00|3

預先感謝。

回答

0

這是應用程序最好留下了任務,但如果你必須在SQL做到這一點,試試這個:

SELECT 
    CASE 
     WHEN RowVal=1 THEN dt.col1 
     ELSE NULL 
    END as Col1 
    ,CASE 
     WHEN RowVal=1 THEN dt.col2 
     ELSE NULL 
    END as Col2 
    ,dt.Col3 
    ,dt.Col4 
    FROM (SELECT 
       col1, col2, col3 
        ,ROW_NUMBER OVER(PARTITION BY Col1 ORDER BY Col1,Col4) AS RowVal 
       FROM ...rest of your big query here... 
     ) dt 
    ORDER BY dt.col1,dt.Col4