【问题标题】:Selecting distinct Vals选择不同的 Vals
【发布时间】:2023-04-05 23:11:01
【问题描述】:

所以我为这个数据表(表 1)设置了三列。即 ParentId 列、ChildId 列和 IsNew 列。

ParentId 是指实体的父 ID。每个 parentId 都有多个子 Id,因此将 parentId 和子 Id 组合在一起会产生唯一的 entityId。 ChildId 指的是实体的 childId。

例如,父 0001 可以有两个子 0001 和 0002。唯一的 entityId 是 00010001 和 00010002。

我正在尝试返回所有不同 ParentIds 的列表,这些 ParentIds 的所有 childIds 的 IsNew 列只有值“是”。例如,ParentId 54 会起作用,因为它的两个孩子(2 和 4)都具有“是”的值。但是,ParentId 14 不起作用,因为它对 childId 2 表示“是”,但对 childID 3 和 4 表示“否”。

我现在拥有的代码如下不起作用:

[顺便说一句,我正在使用 SAS 并在连接到 SSMS 时使用 procsql]

proc sql; select distinct ParentId from Table1 where IsNew = 'Yes' and IsNew != 'No'; run;

任何帮助将不胜感激。 Picture for reference

【问题讨论】:

  • 删除distinct子句
  • 您认为该代码中的感叹号在做什么?您可以使用!! 代替串联运算符||,但不能使用! 代替not 符号。要么在 EBCIDIC 机器上使用实际的 not 符号,要么在 ASCII 机器上使用 ~^ 字符。

标签: sql ssms distinct proc-sql


【解决方案1】:
proc sql; 
select distinct ParentId 
from Table1 
where ParentId not in (select ParentId from Table1 where isNew is null or IsNew = 'No');
run;

我添加了逻辑以不包括 parentId,其中 isNew 为空,尽管我不知道这是否可能(并且没有足够的业力来编写 cmets)

【讨论】:

  • 是的,这正是我所需要的!谢谢!我不知道您可以在另一个 select 语句中包含一个 select 语句。
  • 这叫做子查询,非常有用!
猜你喜欢
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2019-04-10
  • 2020-10-04
  • 2011-09-28
  • 2011-11-07
  • 2011-04-11
相关资源
最近更新 更多