有条件地从一个表或另一个表中选择

时间:2013-08-06 19:39:11

标签: sql sql-server-2008 if-statement case

我有两张桌子

TableA Column1, Column2,Column3, Column4
TableB Column1, Column2,Column3, Column4

要修改的查询:

Select Column2,Column3, Column4
From TableA

如果表B中存在TableA.Column2的值,如何修改上述查询以从TableB中选择Column3?它也必须是TableB.Column1的最大值。

TableA
Column1 Column2 Column3 Column4
1        A      zebra     apple
2        C      lion      orange
3        R      giraffe   banana

TableB
Column1 Column2 Column3 Column4
1       Q       snail     rock
2       C       frog      stone
3       Z       giraffe   tree
4       C       walrus    limb

Result
Column2          Column3   Column4
A                zebra     apple
C                walrus    orange
R                giraffe   banana

可能是这样的:

   Select TableA.Column2,Case When Exists(Select TableB.Column3 From Table3 
   Where        Table2.Column = TableB.Column2 ) Then Select Table2.Column3 Where   [Table2.Column1 is  max value], Column4
   From TableA

1 个答案:

答案 0 :(得分:2)

如下所示:

select
    a.column2
    , case when b.column2 is not null then max(b.column3) else a.column3 end
    , a.column4
from
    tableA a
    left join tableB b
        on a.column2 = b.column2
group by
    a.column2
    , a.column3
    , a.column4
    , b.column2

如果这是家庭作业,如问题所示,请研究代码以了解原因以及如何运作。

相关问题