在select语句中选择distinct。

时间:2013-09-01 02:11:29

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

您好在以下select语句中我想为其中一个列选择不同的值b.bId并且不起作用。声明是

select
    a.sId
   ,distinct b.bId  
    from tlocal a
    left outer join ts b on (b.id=a.mainId)
    where 
    a.id=@xId; 

我必须在select语句中选择distinct,因为这是在存储过程中返回值。 请告诉我,谢谢

2 个答案:

答案 0 :(得分:0)

试试这个

  select
        a.sId,b.theId  
        from tlocal a
        left outer join (select distinct b.ID as theID from ts) b 
           on (b.theid=a.mainId)
        where         a.id=@xId; 

答案 1 :(得分:0)

由于a.id只是一个值,因此您可以对行

执行不同的操作
select distinct a.sId, b.bId  
from tlocal a
left outer join ts b on (CASE WHEN ISNUMERIC(b.id) = 1 THEN convert(int, b.id) ELSE NULL END = a.mainId)
where a.id=@xId; 

因为b.IDvarchar我正在尝试转换为int,因为我无法确定哪种对齐b.ID可能是,例如领先的零或空格,无论如何具有不同类型的FK是不好的政策。

1+到@siride评论