SQL Server中的导出表以及使用FULL OUTER JOIN的技巧

日期: 2008-10-26 作者:Rudy Limeback翻译:April 来源:TechTarget中国 英文

问:我的问题是关于FULL OUTER JOINs导出表的。查询如下: select tb1.usr,tb1.ADD,tb2.UPD from     (select usr,count(nin) ADD        from RGS8 where act=’ADD’      and dte=20080310 group……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:我的问题是关于FULL OUTER JOINs导出表的。查询如下:

select tb1.usr,tb1.ADD,tb2.UPD from
    (select usr,count(nin) ADD   
    from RGS8 where act='ADD' 
    and dte=20080310 group by usr)  tb1 
    FULL OUTER JOIN
    (select usr,count(nin) UPD   
    from RGS8 where act='UPD' 
    and dte=20080310 group by usr)  tb2 
    ON tb1.usr=tb2.usr

  该查询在使用左右外联结时执行很成功,但是结果却不显示完整的外联结。我在想是否有一些带有FULL OUTER JOIN的外联结?

  答:我不知道为什么你这么做不行。除非你使用的是MySQL,不支持FULL OUTER JOIN,否则就不会出现那种情况。但是在这种情况下,你应该收到了一个错误信息,而不是没有任何结果。

  以下是供你选择的策略之一:


SELECT usr
         , SUM(CASE WHEN act = 'ADD'
                    THEN 1
                    ELSE 0 END) AS ADD
         , SUM(CASE WHEN act = 'UPD'
                    THEN 1
                    ELSE 0 END) AS UPD
      FROM RGS8 
     WHERE act IN ('ADD','UPD') 
       AND dte = 20080310 
    GROUP 
        BY usr

  这样做可能会好些,因为它只需要该表的一个入口。

翻译

April
April

相关推荐