加入两个表但只返回一个字段中具有唯一值的行

时间:2013-01-28 08:20:21

标签: sql-server sql-server-2008 tsql

我有一张Currency CHAR(3)表:StressValue (FLOAT)对。 它有6行。

第6行的'Currency'值为'GRP',表示在CurrencyStressValue对的第二个表格中指定的一组货币。

我想在'Currency'上加入两个表,但我不想在第二个表中返回那些在第一个表中的任何一行中包含相同'Currency'值的行。

例如,如果第2行包含组合'GBP':'0.05'而第2行(即。'GRP')表格中包含'GBP'行:'0.10'那么我想要结果集只显示一行'GBP' - 一行为'0.05'

请问,有人可以建议在SQL Server 2008 R2中执行此操作的最佳方法吗?

编辑:

以下是Dimension1 = GroupName的简单LEFT JOIN中的两个表 问题是我的'ES'有两个值:-0.04和-0.045,我只想保留-0.04一个。

enter image description here 编辑2:

左表,右表和期望结果集:

enter image description here

enter image description here

enter image description here

请注意,GroupName ='PE'和'MemberName ='ES'的行已从所需的结果集中排除,因为'ES'已经出现在Left表中。

1 个答案:

答案 0 :(得分:0)

假设我理解你:

select * from
Currency as c
left join StressValue as s on c.Diemention1 = s.GroupName AND s.MemberName <> ( 
  SELECT s.MemberName 
  from Currency as c 
  join StressValue as s 
  on c.Diemention1 = s.MemberName)

请参阅FIDDLE