Sql过滤查询

时间:2018-01-22 13:16:10

标签: sql group-by

在我的表SpecimenSite列中会有重复的数据。

我需要查看SpecimenGroup列,检查其中是否包含数据其他值。

如果我有数据其他,则表示我需要避开该列。 如果我只获得其他,则表示我需要在列中显示其他

现在的表格如下表所示

Original Table Data

我期望在下面显示的内容

Expected Table Data

假设我的表格没有 A 的值为 SAMPLE 意味着它需要显示如下

Another Scenario

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望禁止在SpecimenGroup中具有其他的行,除非SpecimenSite没有其他SpecimenGroup。

select specimen1.specimensite, specimen1.specimengroup 
from specimen specimen1
left join specimen specimen2
on specimen1.specimensite=specimen2.specimensite
and specimen2.specimengroup <> 'Other'
where specimen1.specimengroup <> 'Other'
or specimen2.specimengroup is null
group by specimen1.specimensite, specimen1.specimengroup

答案 1 :(得分:0)

选择标本并检查是否存在相同的网站,但是当你有组=其他时,检查不同的组。

select *
from Specimen as s1
where not exists(
  select *
  from Specimen as s2
  where s2.SpecimenSite = s1.SpecimenSite
  and s2.SpecimenGroup != s1.SpecimenGroup
  and s1.SpecimenGroup = 'Other'
)