按一列分组

时间:2019-12-19 11:34:34

标签: sql sql-server-2008

以下是我的sql查询

select id,
       coalesce(min(case when result = 'good' then 'good end),
                min(date)
               )
       coalesce(min(case when result = 'good' then 'good' end),
                'bad'
               )
from t
group by id;

这就是我的tblProdcuts的样子

我的tblAlternates看起来像这样

enter image description here

我当前的结果如下

enter image description here

我希望看到的结果只是单行而不是3行。

所需的结果就是这样 enter image description here

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

“由于在子查询中,您同时按” productId“和 就像在问题中显示的那样,在“ matchingmodels”列中,您将获得“ productId”的重复值。当您进行联接时,它将返回所有匹配项,因此将得到重复项。由于您似乎不需要“ matchingModels”列,因此无法在子查询中选择它,这将处理重复项。

select p.ProductID,p.PartNo,p.Description
from tblProducts p left join
     (select productid
      from tblAlternates
      where matchingmodels like '%TYT%'
      group by productid
     ) alt
     on p.productid = alt.productid

select p.ProductID,p.PartNo,p.Description
from tblProducts p left join
     (select DISTINCT productid
      from tblAlternates  
       where matchingmodels like '%TYT%'   
     ) alt
     on p.productid = alt.productid

顺便说一句,您需要为此在子查询中移动“ where”条件