解决方案 »

  1.   


    --sql 2008以上的
    WITH cte
    AS
    (
    SELECT t1.djbh,t1.ph,t2.mc,t2.je,ROW_NUMBER() OVER(PARTITION BY t1.djbh,t2.mc,t2.je ORDER BY t2.djbh) rn
    FROM csdnhzb t1 INNER JOIN csdnmxb t2 ON t1.djbh=t2.djbh
    )
    SELECT djbh,ph,mc,je FROM cte WHERE rn=1
      

  2.   


    select a.djbh,a.ph,b.mc,b.je
    from
    (select djbh,ph,row_number() over(partition by djbh order by getdate()) 'rn'
     from csdnhzb) a
    inner join
    (select djbh,mc,je,row_number() over(partition by djbh order by getdate()) 'rn'
     from csdnmxb) b on a.djbh=b.djbh and a.rn=b.rn
     
    /*
    djbh       ph         mc         je
    ---------- ---------- ---------- --------------
    dj123      ph001      第一个名称      100.00
    dj123      ph002      第一个名称      200.00
    dj123      ph003      第一个名称      300.00(3 row(s) affected)
    */
      

  3.   

    路漫漫其修远兮,吾将上下而求索。该学的太多了,就这条语句折磨了几天了。顿时觉得csdn的大侠们真是没有写不出来的sql语句,只有想不到的业务规则啊。