Sql 内部查询返回多行

Sql 内部查询返回多行,sql,oracle,Sql,Oracle,上述查询未执行,因为 内部查询返回多行 单独运行以下子查询,查看哪个子查询返回多行,因为您可能需要使用DISTINCT(或Group By)或在where子句中添加另一个条件,使其唯一(取决于您的数据)。如果子查询返回多行,则不能作为完整查询运行 SELECT FORM_OF_PAYMENT_CD paymentMethod, DECODE (CC_TYPE_CD, 'V', 'VS', 'M', 'MC', 'A', 'AM', 'D', 'DC', NULL) pay

上述查询未执行,因为

内部查询返回多行


单独运行以下子查询,查看哪个子查询返回多行,因为您可能需要使用DISTINCT(或Group By)或在where子句中添加另一个条件,使其唯一(取决于您的数据)。如果子查询返回多行,则不能作为完整查询运行

SELECT 
    FORM_OF_PAYMENT_CD paymentMethod,   
    DECODE (CC_TYPE_CD, 'V', 'VS', 'M', 'MC', 'A', 'AM', 'D', 'DC', NULL) paymentSubMethod,
    PAYMENT_AMOUNT amount,
    LPAD(SUBSTR(trim(PCI_PKG.D_CC(op.CC_NUMBER, 654916320742196284)),
    LENGTH(trim(PCI_PKG.D_CC(op.CC_NUMBER, 654916320742196284)))-3),
    LENGTH(trim(PCI_PKG.D_CC(op.CC_NUMBER, 654916320742196284))) , '*') ccNumber,
    CC_EXP_DATE ccExpirationDate,
    IAI.ADDRESS addressLine1,
    IAI.ZIP zipCode,
    IAI.ZIP_EXTENSION zip4Code,
    DECODE(ORM.EPP_CHANNEL_ID, NULL, NULL, (ORM.EPP_CHANNEL_ID ||'^'   || ORM.EPP_ACTOR_ID   ||'^'   || OP.EPP_TOKEN_ID   ||'^'   || OP.EPP_TOKEN_TYPE   ||'^'   ||       (
        SELECT DISTINCT AUTH.EPP_PAYMENT_ID
        FROM OEMADM.AUTHORIZATION_INFO AUTH
        WHERE AUTH.ORDER_KEY= OP.ORDER_KEY   )) ) eppPaymentInfo,
    (SELECT AI.AUTH_CODE
     FROM AUTHORIZATION_INFO AI
     WHERE AI.PAYMENT_TYPE_CD = op.PAYMENT_TYPE_CD
       AND AI.ORDER_KEY = op.ORDER_KEY
       AND AI.AUTH_TYPE_CD = 'PRE' ) AUTHORIZATION_CODE,
    (SELECT AI.AUTH_STATUS_DESC
     FROM AUTHORIZATION_INFO AI
     WHERE AI.PAYMENT_TYPE_CD = op.PAYMENT_TYPE_CD  
       AND AI.ORDER_KEY = op.ORDER_KEY
       AND AI.AUTH_TYPE_CD = 'PRE' ) PRE_AUTHORIZATION_MSG,
    (SELECT UPDATED_DT   
     FROM SETTLEMENT_REFUND_RESP   
     WHERE TRANSACTION_TYPE_CODE = 'SET'   
       AND PAYMENT_TYPE_CD ='DQP'   
       AND ORDER_KEY = OP.ORDER_KEY   ) REQUEST_DATE ,
    OP.PAYMENT_TYPE_CD paymentTypeCode 
FROM 
    OEMADM.ORDER_PAYMENTS OP,   
    OEMADM.IDENT_ADDRESS_INFO IAI,   
    OEMADM.ORDER_MASTER ORM 
WHERE 
    OP.ORDER_KEY           = 'ow-srso-229451126' 
AND ORM.ORDER_KEY          = OP.ORDER_KEY 
AND IAI.IDENT_ADDR_INFO_ID = OP.PAYER_ADDR_INFO_ID

好的,很高兴知道。也许把它们改成相关查询。你可以在子查询中使用max()和min()函数。威尔只是说你可以单独检查每个子查询,并检查重复的内容。如果它们实际上是相同的,只是增加了一倍,您可以对它们使用
DISTINCT
。否则,您将需要一个聚合(如果可能的话)。您也可以加入表,改为修改语句以解决此问题。-在ANSI-92 SQL标准中(20多年前),旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,不鼓励使用它
 (SELECT AI.AUTH_CODE FROM AUTHORIZATION_INFO AI WHERE AI.PAYMENT_TYPE_CD = op.PAYMENT_TYPE_CD AND AI.ORDER_KEY = op.ORDER_KEY AND AI.AUTH_TYPE_CD = 'PRE' ) 

 (SELECT AI.AUTH_STATUS_DESC FROM AUTHORIZATION_INFO AI WHERE AI.PAYMENT_TYPE_CD = op.PAYMENT_TYPE_CD AND AI.ORDER_KEY = op.ORDER_KEY AND AI.AUTH_TYPE_CD = 'PRE' ) 

 (SELECT UPDATED_DT FROM SETTLEMENT_REFUND_RESP WHERE TRANSACTION_TYPE_CODE = 'SET' AND PAYMENT_TYPE_CD ='DQP' AND ORDER_KEY = OP.ORDER_KEY ) REQUEST_DATE ,