【问题标题】:Select specific row in oracle without subquery [closed]在没有子查询的情况下选择oracle中的特定行[关闭]
【发布时间】:2023-03-19 04:09:02
【问题描述】:

我有一个非常复杂的查询,我需要一些通话记录以及每个通话记录以单行显示特定寄售,所以背后的想法是

ConsignmentID OTHERCOLUMN OTHERCOLUMN CALL_LOG1             CALL_LOG2 

现在的问题是我可以使用子查询来做到这一点,但我的呼叫日志列不能接受子查询中的子查询来获取特定的日志 #2 和 #3

我的表结构

CALL_LOG
CONSIGNMENTID CALL_LOGID REMARKS

当我在 CONSIGNMENT.CONSIGNMENT_ID 上有一个无法识别此子查询的 where 子句时,我的子查询中出现问题

SELECT CONSIGNMENT_ID, ( SELECT REMAKS FROM (   SELECT
    ROW_NUMBER() OVER (ORDER BY DayRangeId ASC) AS rownumber  FROM CALL_LOG WHERE CALL_LOG.CONSIGNMENT_ID = CONSIGNMENT.CONSIGNMENT_ID  )  as temptablename WHERE rownumber = 4 ) as CALL_LOG1,( SELECT REMAKS FROM (   SELECT
    ROW_NUMBER() OVER (ORDER BY DayRangeId ASC) AS rownumberFROM CALL_LOG WHERE 
CALL_LOG.CONSIGNMENT_ID = CONSIGNMENT.CONSIGNMENT_ID  )  as temptablename WHERE rownumber = 3 )  FROM CONSIGNMENT 

【问题讨论】:

  • 您的问题明确与 Oracle 有关,因此我删除了其他标签。此外,您应该使用示例数据和所需结果编辑您的问题。不起作用的查询的意图尚不清楚。

标签: sql oracle oracle11g oracle-sqldeveloper


【解决方案1】:

我假设字段 DayRangeId 在 call_log 表中。这个查询对我有用:

with remarks as (
  SELECT CONSIGNMENT_ID cid, remarks,
      ROW_NUMBER() OVER (partition by CONSIGNMENT_ID ORDER BY DayRangeId ASC) AS rn  
    FROM CALL_LOG )
SELECT CONSIGNMENT_ID, r4.remarks call_log4, r3.remarks call_log3
  FROM CONSIGNMENT c
    left join remarks r3 on r3.cid = consignment_id and r3.rn=3
    left join remarks r4 on r4.cid = consignment_id and r4.rn=4

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2018-01-19
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2020-09-15
    • 2018-06-27
    相关资源
    最近更新 更多