2010-05-11 64 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