如何生成Oracle SQL语句,其中每个列都需要自己的单独查询?

如何生成Oracle SQL语句,其中每个列都需要自己的单独查询?,sql,oracle,Sql,Oracle,我有一个查询,需要使用单独的查询来填写各个列: 每一列看起来都是这样 select PERFORMED_DATE from HHS_UMX_RESP_ACTIVITY where REG_REQUEST_ID IN ('261507') AND ACTIVITY_RESULT_CODE = 'ASD' AS "Security" UNION select PERFORMED_DATE from HHS_UMX_RESP_ACTIVITY where REG_REQUEST_

我有一个查询,需要使用单独的查询来填写各个列:

每一列看起来都是这样

select PERFORMED_DATE from HHS_UMX_RESP_ACTIVITY where 
    REG_REQUEST_ID IN ('261507') AND ACTIVITY_RESULT_CODE = 'ASD' 
AS "Security"
UNION
select PERFORMED_DATE from HHS_UMX_RESP_ACTIVITY where 
    REG_REQUEST_ID IN ('261507') AND ACTIVITY_RESULT_CODE = 'OTZ' 
AS "Training"
UNION
select PERFORMED_DATE from HHS_UMX_RESP_ACTIVITY where 
    REG_REQUEST_ID IN ('261507') AND ACTIVITY_RESULT_CODE = 'ARA' 
AS "Responsibility"
每列中唯一改变的是
活动\u结果\u代码

我知道这种语法不起作用。有没有语法可以做到这一点

我的查询将从特定表中为每个不同的列获取不同的数据。 我的数据库输出屏幕截图,用于此查询:

从HHS\u UMX\u RESP\u活动中选择*,其中REG\u REQUEST\u ID IN('262050')和活动\u RESULT\u code='ASD'和ROWNUM<2

用户电子表格如下所示: 因此,“责任”/“主管”列将分别对应于
活动\u结果\u代码
列各自的唯一值(这些称为“UPA请求状态”-SBT、WSP、ASP、WRA、ARA、WTV、ATV…等之一):

谢谢

你说“针对每一个不同的列”,但没有不同的列。只有
活动\u结果\u代码上的不同选择

除了表别名之外,它们现在的语法可以很好地工作,这完全是不必要的。您编写的查询也可以编写为:

select PERFORMED_DATE 
from HHS_UMX_RESP_ACTIVITY 
where REG_REQUEST_ID = '261507' AND ACTIVITY_RESULT_CODE IN ('ASD','OTZ','ARA'); 
GROUP BY PERFORMED_DATE

因此,您希望在结果集的同一行中显示来自不同行的信息。标准答案是联接,即使我们联接同一个表:

select 
  securityRow.REQ_REQUEST_ID, 
  securityRow.PERFORMED_DATE as securityDate, 
  trainingRow.PERFORMED_DATE as trainingDate, 
  responsibilityRow.PERFORMED_DATE as responsibilityDate
from HHS_UMX_RESP_ACTIVITY securityRow
join HHS_UMX_RESP_ACTIVITY trainingRow on trainingRow.REG_REQUEST_ID = securityRow.REG_REQUEST_ID
join HHS_UMX_RESP_ACTIVITY responsibilityRow on responsibilityRow.REQ_REQUEST_ID = securityRow.REG_REQUEST_ID
where securityRow.ACTIVITY_RESULT_CODE = 'ASD' 
  and trainingRow.ACTIVITY_RESULT_CODE = 'OTZ' 
  and responsibilityRow.ACTIVITY_RESULT_CODE = 'ARA' 

这假设每个请求ID和活动结果代码正好有一行匹配。否则,如果最多有一个连接,则需要根据需要使用外部连接。如果有多行,则必须将结果集限制为要使用的结果集

其中REG\u REQUEST\u ID='261507'和ACTIVITY\u RESULT\u code IN('ASD'、'OTZ'、'ARA')
。顺便说一句:如果
REG\u REQUEST\u ID
是一个数字,您不应该将其与字符串进行比较。请提供示例数据和预期输出,好吗?我怀疑您正在寻找一个pivot,但是如果有两行的activity\u result\u code='ASD'具有不同的日期,您希望输出是什么?最高日期?两次约会?如果是后者,您希望如何显示?等etc@Boneist-我添加了截图,不确定这是否是你的意思?嗨,我添加了更多信息,你的查询是否仍然适用于我的案例啊,是的,外部连接。我确实需要用这个,贝克。我得到了巨大的数据呃,外部连接不会使数据变小。我已经编辑过,以便更清楚地说明它们何时会被使用。