CASE WHEN 상세 정보 + 인스턴스
select 문장에 조건 문장을 사용합니다: 만약 데이터베이스에 있는 한 필드Gender로 성별을 저장한다면 1/0 두 개의 값을 저장할 수 있습니다. 이 때 selectcasewhen gender = 1 then'Man'else'Woman'endas [gender] from Person Info
SQL CASE 표현식은 다른 언어의 if/else 문과 유사한 일반적인 조건 표현식입니다.
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
CASE 자문은 표현식이 유효하게 존재할 수 있는 모든 곳에 사용할 수 있습니다.condition은 boolean을 되돌려 주는 표현식입니다.만약 결과가 진실이라면, CASE 표현식의 결과는 조건에 부합되는result이다.만약 결과가 가짜라면, 다음 WHEN 자구를 같은 방식으로 검색하십시오.만약 WHEN condition이 진실이 아니라면,case 표현식의 결과는 ELSE 자구의 값입니다.ELSE 자구가 생략되고 일치하는 조건이 없으면 결과는 NULL입니다.
예:
SELECT * FROM test;
a
---
1
2
3
SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test;
a | case
---+-------
1 | one
2 | two
3 | other
모든result 표현식 데이터의 형식은 단일한 출력 형식으로 변환될 수 있어야 합니다.
아래의 이'간단한'CASE 표현식은 위의 통용적인 형식의 특수한 변종이다.
CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END
먼저 expression의 값을 계산한 다음, WHEN 자구에 표시된value와 같은 값을 찾을 때까지 비교합니다.일치하는 것을 찾지 못하면 ELSE 자문에 있는 Result (또는 NULL) 를 되돌려줍니다.이것은 C의
switch
문장과 유사하다.위의 예는 간단한 CASE 구문으로 작성할 수 있습니다.
SELECT a,
CASE a WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'other'
END
FROM test;
a | case
---+-------
1 | one
2 | two
3 | other
CASE 표현식은 결과를 판단하는 데 필요하지 않은 하위 표현식을 계산하지 않습니다.예를 들어, 다음은 제로를 피할 수 있는 방법입니다.
SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;
원본 주소:http://blog.csdn.net/jiwenyi163/article/details/2794038
다음은 케이스 when 예입니다.
SELECT dbo.FM_InHospital_Fee.EMPI_ID AS p_main_id, dbo.FM_InHospital_Fee.Inhosp_No AS p_settlement_code, dbo.FM_InHospital_Fee.Pat_Name AS p_name,
dbo.PA_Patient_Information.Sex_Name AS p_sex, dbo.FM_InHospital_Fee.Inhosp_Index_No AS p_admit_id,
dbo.PA_Inhospital_Registration.MR_No AS p_medical_record_id, dbo.FM_InHospital_Fee.Curr_Dept_Code AS p_admit_dept_code,
dbo.FM_InHospital_Fee.Curr_Dept_Name AS p_admit_dept_name, dbo.PA_Inhospital_Registration.Admit_Bed_No AS p_admit_bed_no,
dbo.PA_Inhospital_Registration.Admit_Date AS p_admit_date, dbo.PA_Inhospital_Registration.Discharge_Date AS p_discharge_date, '' AS p_admit_days,
dbo.FM_InHospital_Fee.Medicare_Categ_Name AS p_medicare_type, dbo.PA_Patient_Information.HC_No AS p_social_security_id,
dbo.FM_InHospital_Fee.Charge_Date AS p_settlement_date, dbo.FM_InHospital_Fee.Settlement_Staff_Name AS p_settlement_person, '' AS p_personal_fee,
'' AS p_medicare_fund_payment, '' AS p_accept_fee, '' AS p_pay_fee, '' AS p_expect_fee, CASE WHEN Charge_Item_Code = 'BILL03' THEN 'Receivable_Fee' ELSE NULL
END AS p_western_medicine_fee, CASE WHEN Charge_Item_Code = 'BILL04' THEN 'Receivable_Fee' ELSE NULL END AS p_chinese_patent_medicine_fee,
CASE WHEN Charge_Item_Code = 'BILL05' THEN 'Receivable_Fee' ELSE NULL END AS p_chinese_herbal_medicine_fee,
CASE WHEN Charge_Item_Code = 'BILL06' THEN 'Receivable_Fee' ELSE NULL END AS p_inspect_fee,
CASE WHEN Charge_Item_Code = 'BILL08' THEN 'Receivable_Fee' ELSE NULL END AS p_irradiation_fee,
CASE WHEN Charge_Item_Code = 'BILL10' THEN 'Receivable_Fee' ELSE NULL END AS p_assay_fee,
CASE WHEN Charge_Item_Code = 'BILL07' THEN 'Receivable_Fee' ELSE NULL END AS p_treatment_fee,
CASE WHEN Charge_Item_Code = 'BILL09' THEN 'Receivable_Fee' ELSE NULL END AS p_operation_fee,
CASE WHEN Charge_Item_Code = 'BILL11' THEN 'Receivable_Fee' ELSE NULL END AS p_oxygen_therapy_fee,
CASE WHEN Charge_Item_Code = 'BILL01' THEN 'Receivable_Fee' ELSE NULL END AS p_medical_fee,
CASE WHEN Charge_Item_Code = 'BILL02' THEN 'Receivable_Fee' ELSE NULL END AS p_bed_fee,
CASE WHEN Charge_Item_Code = 'BILL12' THEN 'Receivable_Fee' ELSE NULL END AS p_other_fee, '' AS p_material_fee, '' AS p_intensive_care_fee,
'' AS p_transfusion_fee, '' AS p_nurse_fee, dbo.FM_InHospital_Fee.Total_Fee AS p_add_fee
FROM dbo.FM_InHospital_Fee INNER JOIN
dbo.PA_Patient_Information ON dbo.FM_InHospital_Fee.EMPI_ID = dbo.PA_Patient_Information.EMPI_ID INNER JOIN
dbo.PA_Inhospital_Registration ON dbo.FM_InHospital_Fee.EMPI_ID = dbo.PA_Inhospital_Registration.EMPI_ID
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Confluence에서 PlantUML을 사용하여 ER 다이어그램을 텍스트 기반으로 작성외래 키 제약이 완벽하게 작성된 환경이라면, 리버스 엔지니어링으로 자동으로 ER 다이어그램을 작성해 주는 툴은 상당히 있을까 생각합니다. 그러나 외래 키 제약 조건이 유지되지 않는 환경에서는 수동으로 관계를 결정해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.