Oracle cumulative count using SYS_CONNECT_BY_PATH

前端 未结 1 358
面向向阳花
面向向阳花 2021-01-16 20:05

When i have tried the below query on actual data it returned more number of records. Please help to resolve this issue.

Below is the actual data in table DM_TEMP_SUM

相关标签:
1条回答
  • 2021-01-16 20:32

    Solely with a trial and error over your SQL Fiddle sample data, this is the query returning your expected data:

    SELECT SYS_CONNECT_BY_PATH(firmware_version, '/') path_,
      firmware_version,
      device_count,
      dmc_id,
      charging_group_id,
      IMAGE_PREREQUISITE,
      (SELECT SUM(device_count)
      FROM DM_TEMP_SUMMING_DVC_BY_FW t2
      START WITH t1.firmware_version = t2.firmware_version
            and T1.dmc_id = T2.dmc_id
            and T1.charging_group_id = T2.charging_group_id
      CONNECT BY nocycle PRIOR firmware_version=image_prerequisite and prior dmc_id = dmc_id and prior charging_group_id = charging_group_id
      ) sum_device
    FROM DM_TEMP_SUMMING_DVC_BY_FW t1
    START WITH image_prerequisite IS NULL
    CONNECT BY nocycle PRIOR firmware_version = image_prerequisite
        and prior dmc_id = dmc_id
        and prior charging_group_id = charging_group_id
    

    Note: Yes, the charging_group_id and dmc_id are very important for your expected result, as krokodilko correctly mentioned in his above comment.

    0 讨论(0)
提交回复
热议问题