首页 > 解决方案 > SQL Case 语句逻辑问题

问题描述

试图让 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 是第一个表中的 QTY,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);

标签: sqlsql-server

解决方案


我感觉您是在有条件地为现有的 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

推荐阅读