How to Convert string to boolean with function CASE WHEN in PostgreSQL

192 Views Asked by At

Full Query:

SELECT
        '' as [id],
        a.OrganizationId as [organization_id],
        a.AdmissionNo as [admission_no],
        a.AdmissionDate as [admission_date],
        p.MrNo as [mr_no],
        p.Name as [name],
        p.BirthDate as [birth_date],
        dr.RequestDate as [request_date],
        dr.DischargeRequestStatusId as [request_status_id],
        drs.Name as [request_status],
        a.DischargeDate as [discharge_date],
        dt.Name as [discharge_type],
        d.DischargeConditionId as [discharge_condition_id],
        dc.Name as [discharge_condition],
        d.Notes as [notes],
        as2.Name as [admission_status],
        u.Name as [create_user],
        '' as [created_at],
        '' as [updated_at],
        '' as [deleted_at],
        ( 
            CASE
                WHEN d.DischargeStatusId = 1 THEN 'true'
                WHEN dr.DischargeRequestStatusId = 1 THEN 'false'
            END
        ) as [is_discharge_status],
        a.AdmissionId as [admission_id],
        a.DischargeId as [discharge_id],
        p.NationalIdNo as [nationality_id_no]
    FROM 
        [HIS].PatientTrx.Admission a
    LEFT JOIN
        [HIS].Patient.Patient p ON a.PatientId = p.PatientId 
    LEFT JOIN 
        [HIS].PatientTrx.DischargeRequest dr ON a.DischargeRequestId = dr.DischargeRequestId
    LEFT JOIN 
        [HIS].Patient.DischargeRequestStatus drs ON dr.DischargeRequestStatusId = drs.DischargeRequestStatusId 
    LEFT JOIN 
        [HIS].PatientTrx.Discharge d ON a.DischargeId = d.DischargeId 
    LEFT JOIN 
        [HIS].Patient.DischargeType dt ON d.DischargeTypeId = dt.DischargeTypeId 
    LEFT JOIN 
        [HIS].Patient.DischargeCondition dc ON d.DischargeConditionId = dc.DischargeConditionId 
    LEFT JOIN 
        [HIS].Patient.AdmissionStatus as2 ON a.AdmissionStatusId = as2.AdmissionStatusId 
    LEFT JOIN 
        [HIS].[Security].[User] u ON d.CreateUserId = u.CreateUserId

I want the end result of the above query especially in CASE WHEN it generates BOOLEAN instead of STRING. How to Do It ?

CASE
    WHEN d.DischargeStatusId = 1 THEN true
    WHEN dr.DischargeRequestStatusId = 1 THEN false
END

if I write a query like this above it will get a SQL Error error [207] [S0001]: Invalid column name 'true'. How to get BOOLEAN results ?

0

There are 0 best solutions below