如何生成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-我添加了截图,不确定这是否是你的意思?嗨,我添加了更多信息,你的查询是否仍然适用于我的案例啊,是的,外部连接。我确实需要用这个,贝克。我得到了巨大的数据呃,外部连接不会使数据变小。我已经编辑过,以便更清楚地说明它们何时会被使用。