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

时间:2015-05-19 17:29:34

标签: 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_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"

每列中唯一更改的内容是ACTIVITY_RESULT_CODE

我知道这种语法不起作用。有这样的语法吗?

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

SELECT * FROM HHS_UMX_RESP_ACTIVITY where REG_REQUEST_ID IN ('262050') AND ACTIVITY_RESULT_CODE = 'ASD' AND ROWNUM < 2enter image description here

用户电子表格如下所示: 所以专栏&#34;责任&#34; /&#34;主管&#34;将各自对应于列ACTIVITY_RESULT_CODE的唯一值(这些称为&#34; UPA请求状态&#34; - SBT,WSP,ASP,WRA,ARA,WTV,ATV等之一) :

enter image description here 谢谢!

2 个答案:

答案 0 :(得分:1)

您说“对于每个不同的列”,但没有不同的列。 complexType上只有不同的选择。

你现在拥有的语法,除了表别名外,还可以正常工作,完全没必要。您编写的查询也可以写成:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:mine="urn:devhelp"
  targetNamespace="urn:devhelp"
  elementFormDefault="qualified">

  <xsd:element name="book">
    <xsd:complexType>
      <xsd:attribute name="title" type="xsd:string" use="required"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

答案 1 :(得分:1)

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

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' 

这假设每个REQ_REQUEST_ID和ACTIVITY_RESULT_CODE只有一行匹配。否则,如果最多只有一个,则需要根据需要使用外连接。如果有多行,则必须将结果集限制为要使用的行。