0

嗨,在下面的选择语句中,我想为其中一列选择不同的值 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,因为这是在存储过程中返回值。请告诉我,谢谢

4

2 回答 2

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; 
于 2013-09-01T02:14:57.720 回答
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.ID正在varchar尝试转换为int,因为我无法确定 b.ID可能是哪种对齐方式,例如前导零或空格,无论如何拥有不同类型的 FK 都是不好的策略。

1+@siride评论

于 2013-09-01T05:18:21.017 回答