Sql 有条件地从一个表或另一个表中选择
我有两张桌子Sql 有条件地从一个表或另一个表中选择,sql,sql-server-2008,if-statement,case,Sql,Sql Server 2008,If Statement,Case,我有两张桌子 TableA Column1, Column2,Column3, Column4 TableB Column1, Column2,Column3, Column4 要修改的查询: Select Column2,Column3, Column4 From TableA 如果TableB中存在TableA.Column2的值,我将如何修改上述查询以从TableB中选择Column3?它还必须是表B.Column1的最大值 TableA Column1 Column2 Column3
TableA Column1, Column2,Column3, Column4
TableB Column1, Column2,Column3, Column4
要修改的查询:
Select Column2,Column3, Column4
From TableA
如果TableB中存在TableA.Column2的值,我将如何修改上述查询以从TableB中选择Column3?它还必须是表B.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
如下所示:
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
如果这是一个家庭作业,如问题所示,请学习代码以了解其原因和工作方式。案例构造和连接表的组合应该可以解决这个问题。看来你已经知道案例结构了。不,这不是家庭作业。它是具有许多联接的更大查询的一部分。我只是想专注于其中的一部分。我理解它,但我必须看看是否可以将其集成到更大的查询中。小组讨论可能很困难。谢谢你的帮助。啊,那样的话,不客气。谢谢你简化了这个问题我还在努力。到目前为止,我只得到一排。那是没有组员的。这可能与长查询的另一部分有关。小组讨论是否有必要?你能解释一下原因吗?谢谢你。除了一件事,我让它工作了。我不需要马克斯(b.3)。我需要b.column3,其中max(b.column1)。