Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为一列复杂查询(oracle)选择distinct_Oracle - Fatal编程技术网

为一列复杂查询(oracle)选择distinct

为一列复杂查询(oracle)选择distinct,oracle,Oracle,这是一个包含as、multiple join、where、counts、max等的查询 我正在为一家血液中心做一份报告,报告将显示去年每位献血者损失了多少血液和血浆。我算出了所有其他的,但它基本上提取了去年每个捐赠者的所有名单。我只想展示最新的。我有MAX on date,等等,并尝试在捐赠者ID上使用Distinct,甚至只根据捐赠者ID进行分组(它不允许我,错误) 我正在使用Oracle with DonorBloodLoss AS ( SELECT dv.DONOR_ID, SUM(dd

这是一个包含as、multiple join、where、counts、max等的查询

我正在为一家血液中心做一份报告,报告将显示去年每位献血者损失了多少血液和血浆。我算出了所有其他的,但它基本上提取了去年每个捐赠者的所有名单。我只想展示最新的。我有MAX on date,等等,并尝试在捐赠者ID上使用Distinct,甚至只根据捐赠者ID进行分组(它不允许我,错误)

我正在使用Oracle

with DonorBloodLoss AS ( SELECT  dv.DONOR_ID, SUM(ddlrbc.COLLECTION_AMOUNT_LOSS) AS RBCLoss, 
        SUM(ddlpls.COLLECTION_AMOUNT_LOSS) AS PlasmaLoss FROM    DONOR_VISIT dv INNER JOIN
        DONOR_DRAW drw ON dv.VISIT_ID = drw.VISIT_ID INNER JOIN
        DONOR_DRAW_LOSS ddlrbc ON drw.DRAW_ID = ddlrbc.DRAW_ID AND ddlrbc.LOSS_TYPE_CD = 'REDCELL' INNER JOIN
        DONOR_DRAW_LOSS ddlpls ON drw.DRAW_ID = ddlpls.DRAW_ID AND ddlpls.LOSS_TYPE_CD = 'PLASMA' WHERE   dv.VISIT_DATETIME BETWEEN  SYSDATE - 364 AND SYSDATE + 1 GROUP BY dv.DONOR_ID, (dv.DONOR_ID)

) SELECT dv.Donor_ID, dnr.LASTNAME, dnr.FIRSTNAME, dnr.MIDDLENAME, dnr.BIRTHDATE,
        dnr.GENDER_CD,CONCAT(dnr.ABO_CD, dnr.RH_CD) AS BloodType,  MAX(visit_datetime)as LastDonationDate, MAX(du.UNIT_NO) AS DIN,  dvp.DONOR_PHYS_RESULT AS Wgt, dbl.RBCLOSS, dbl.PlasmaLoss FROM  donor_visit dv INNER JOIN
      DONOR dnr ON dv.DONOR_ID = dnr.DONOR_ID INNER JOIN
      DonorBloodLoss dbl ON dnr.DONOR_ID = dbl.DONOR_ID INNER JOIN
      DONOR_VISIT_PHYSICAL dvp ON dv.VISIT_ID = dvp.VISIT_ID AND dvp.DONOR_PHYSICAL_ID = 'WGT' INNER JOIN
      DONOR_DRAW drw ON dv.VISIT_ID = drw.VISIT_ID INNER JOIN
      DONOR_UNIT du ON drw.DRAW_ID = du.DRAW_ID WHERE   dbl.RBCLOSS >= 1679 OR
       (dbl.PlasmaLoss >= 11250 AND dvp.DONOR_PHYS_RESULT BETWEEN 110 AND 175) OR
       (dbl.PlasmaLoss >= 13650 AND dvp.DONOR_PHYS_RESULT > 175)  GROUP BY du.UNIT_NO, dv.Donor_ID, dnr.LASTNAME, dnr.FIRSTNAME, dnr.MIDDLENAME,  dnr.BIRTHDATE, dnr.GENDER_CD, CONCAT(dnr.ABO_CD, dnr.RH_CD), dvp.DONOR_PHYS_RESULT, dbl.RBCLOSS,  dbl.PlasmaLoss ORDER BY dnr.LASTNAME;