查询表上的数据,字段相互关联

时间:2019-03-26 16:19:28

标签: sql-server

大家好,我只是从SQl服务器开始

数据

type    num1    num2    date1         
   A      1       2   01/01/2019    
   b      1           01/02/2019
   b      3           05/02/2017
   a      1       1   03/02/2019    
   a      2       3   15/03/2018    
   b      2           20/12/2018

预期结果

type    num1    num2    date1         'date2' 
   a      1       2   01/01/2019    20/12/2018
   a      1       1   03/02/2019    01/02/2019
   a      2       3   15/03/2018    05/02/2017

这是迄今为止我做的最好的事,我的date2都搞砸了,因为我没有获得正确的值,而且日期仍然存在问题,即在不同的年份num1中可能存在相同的数字1类型b在2017年存在和2019

select c1.type, c1.num1, c1.num2, c1.date, c2.date as 'date2'
from t1 c1
inner join t1 c2 on c2.num2=c1.num1
order by c1.type

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我认为这很简单:

SELECT
    t1.[type],
    t1.num1,
    t1.num2,
    t1.date1,
    t2.date1 AS date2
FROM
    t1
    LEFT JOIN t2 ON t2.num1 = t1.num2 AND t2.num2 IS NULL
ORDER BY
    t1.[type];

但是请注意,由于您的问题尚不完全清楚,我必须在一定程度上提出要求。

答案 1 :(得分:1)

您需要做的就是加入自己,然后允许约会

Declare @table1 table (type Char(1)
                    ,num1 int
                    ,num2 int
                    ,date1 date)
    insert into @table1 (type,num1,num2,date1)
    values

    ('a',1,2,'2019-01-01')
    ,('b',1,null,'2019-01-02')
    ,('b',3,null,'2017-05-02')
    ,('a',1,1,'2019-03-02')
    ,('a',2,3,'2018-03-15')
    ,('b',2,null,'2018-12-20')


    select t.*,t2.date1 'Date2'
    from @table1 t
    inner join @table1 t2
    on t.num2 = t2.num1
    and t.type = 'a'
    and t2.type = 'b'