SQL Case 语句逻辑问题

时间:2021-02-26 20:40:05

标签: sql sql-server

试图让 case 语句中的逻辑起作用。用简单的英语我说“如果第一个表中的数量大于第二个表中的 ALOS,我想运行这个计算:

DRG_Rate=DRG_Rate + ([GMC Claims 2019].Qty-BCBS_DRG_REIMBURS.ALOS)* BCBS_DRG_REIMBURS.Per_Diem_High_Trim_Outlier

我让 Join 工作,它返回在两个表中匹配的 DRG 以及 DRG_Rate。现在我想根据上面的条件语句调整 DRG_Rate。如果你们都需要其他信息,请告诉我。感谢您的指导,我对 SQL 还很陌生!

*预期结果是:第二个表中的 11513.43 汇率 + (15-8) 2014.85 = 27,632.23

第一个表中的 15 是数量,第二个表中的 8 是 ALOS,2014.85 是第二个表中的每日异常值 **

这是我的尝试:

SELECT 

CASE
DRG_Rate

WHEN [GMC Claims 2019].Qty > BCBS_DRG_REIMBURS.ALOS 
THEN DRG_Rate=DRG_Rate + ([GMC Claims 2019].Qty-BCBS_DRG_REIMBURS.ALOS)* BCBS_DRG_REIMBURS.Per_Diem_High_Trim_Outlier

FROM [GMC Claims 2019] LEFT JOIN BCBS_DRG_REIMBURS ON
[GMC Claims 2019].DRG=BCBS_DRG_REIMBURS.DRG_Code
WHERE [GMC Claims 2019].DRG=BCBS_DRG_REIMBURS.DRG_Code

还有我的桌子:

CREATE TABLE [GMC Claims 2019] (
   
    PatNo INT NOT NULL ,
    PName VARCHAR(50) NOT NULL ,
    HSSV VARCHAR(50) NOT NULL,
    DateOfService INT,
    InsName VARCHAR(50),
    DRG INT,
    RevCode INT,
    CPT VARCHAR(50),
    Qty INT  , 
    BilledCharges DECIMAL (9,2) NOT NULL,
       
);



INSERT INTO [GMC Claims 2019] (PatNo, PName, HSSV, DateOfService, InsName, DRG, RevCode, CPT, Qty, BilledCharges)

VALUES (5, 'Hisham', 'SIP', 5, 'BCBS', 439, 344, '44', 15, 500), 
;

CREATE TABLE [BCBS DRG CARVE OUT 07012016] (
   
    DRG INT NOT NULL ,
    ServiceCat VARCHAR(50) NOT NULL ,
    Pmt DECIMAL (8,2) NOT NULL       
);

INSERT INTO [BCBS DRG CARVE OUT 07012016] (DRG, ServiceCat, Pmt)

VALUES (28, 'DRG Carve Out', 13537),
 (29, 'DRG Carve Out', 13537),
 (30, 'DRG Carve Out', 13537),
 (101, 'DRG Carve Out', 13537);
 
 CREATE TABLE BCBS_DRG_REIMBURS(
   DRG_Code                   INTEGER  NOT NULL PRIMARY KEY 
  ,Description                VARCHAR(200)
  ,DRG_Weight                 NUMERIC(8,5) NOT NULL
  ,ALOS                       INTEGER  NOT NULL
  ,High_Trim                  INTEGER  NOT NULL
  ,Effective_Date             DATE 
  ,DRG_Rate                   NUMERIC(9,2) NOT NULL
  ,Per_Diem_High_Trim_Outlier NUMERIC(8,2) NOT NULL
);


INSERT INTO BCBS_DRG_REIMBURS(DRG_Code,Description,DRG_Weight,ALOS,High_Trim,Effective_Date,DRG_Rate,Per_Diem_High_Trim_Outlier) VALUES (439,'DISORDERS OF PANCREAS EXCEPT MALIGNANCY W CC',0.86230,4,7,NULL,11513.43,2014.85);

1 个答案:

答案 0 :(得分:0)

我感觉到您有条件地向现有 DRG 率添加一个值,因此我将其表示为通常为零的调整。无论哪种方式,您的问题主要是语法问题。

DRG_Rate +
CASE WHEN [GMC Claims 2019].Qty > BCBS_DRG_REIMBURS.ALOS 
    THEN ([GMC Claims 2019].Qty - BCBS_DRG_REIMBURS.ALOS) * BCBS_DRG_REIMBURS.Per_Diem_High_Trim_Outlier
    ELSE 0
END