带有连接返回的重复值

时间:2010-05-11 16:07:30

标签: tsql

我想知道是否有使用TSQL join语句(或任何其他可用选项)的方法只显示某些值。我会尽力解释我的意思。

我的数据库有名为Job,consign,dechead,decitem的表。作业,委托和dechead每个记录只有一行,但是decitem可以有多个记录都与外键绑定到dechead。我正在编写一个查询,从每个表中提取各种值。除了decitem之外,所有表都可以。从十分之一开始,我需要提取发票金额,从分数开始,我需要抓住净值。如果dechead有多个子decitem表,则返回结果时,它会显示两个表中的所有值。我需要做的只是显示一次dechad值,然后显示所有的decitems值。

e.g。

1 |123 |£2000 |15.00 | 1

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

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

第1行显示dechead的值和第一行/来自decitems的Join。第2行和第3行只显示decitem的值。如果我然后将查询导出为ex​​cel,则在第2行和第3行的前两个文件中没有重复值

e.g。

1 |123 |£2000 |15.00 | 1

2 |123 |£2000 | 20.00 | 2

3 |123 |£2000 | 25.00 | 3

提前致谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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