【发布时间】:2016-11-01 11:57:13
【问题描述】:
SQL 初学者
我的表包含访问要求,两种类型都保存在同一个表中。 记录可以有 'ADP' 或 'SENT' 或 Both。 我需要返回一个值来提供给另一个查询。
当两种访问类型都存在时,我的 SELECT 查询返回 2 行,那么我如何对其进行编码以返回单个值。 因此,如果仅存在 ADP,我会得到 ADP, 如果只找到 SENT,我会收到 SENT 但如果同时找到 ADP 和 SENT,我只会收到 SENT。
我的表包含很多字段,但本质上是这样的
SUA_PERUSER_ID SUA_ACCESS_TYPE
10000000 ADP
10000001 SENT
10000002 ADP
10000002 SENT
我的查询是这样的
SELECT S_USER_ACCESS.SUA_PERUSER_ID, S_USER_ACCESS.SUA_ACCESS_TYPE
FROM S_USER_ACCESS
WHERE S_USER_ACCESS.SUA_PERUSER_ID = <Client_ID>
<client_ID> 由用户输入。
【问题讨论】:
-
您能否提供一些额外的信息?表格结构、数据示例和预期结果
-
请向我们展示您的表格和查询。
-
请注意:虽然通过表名来限定列名是一种很好的做法,但当查询中只有一个表时通常不会这样做。而且,为了便于阅读,您可以使用表别名(在 Oracle 中不使用关键字 AS;语法是
FROM S_USER_ACCESS S- 然后在其他子句中您可以说S.SUA_PERUSER_ID和S.SUA_ACCESS_TYPE。更容易眼睛! -
执行此操作的最关键部分是了解使您确定在存在多个值时返回哪个是正确值的业务规则。没有这个,任何解决方案都是猜测。它可能会返回数据,但不一定是正确的数据。