sql 根據某一字段的值動態選擇其他關聯字段

select
    pmsInfo.id,
    pmsInfo.categoryId,
    (case when pmsInfo.categoryId = 135 THEN consultSum.amount ELSE caseSum.amount end) amount,
		(case when pmsInfo.categoryId = 135 THEN DATE_FORMAT(consultSum.createTime,'%Y%m%d') ELSE DATE_FORMAT(caseSum.createTime,'%Y%m%d') end) statisticTime
    from
    pms_info pmsInfo
    LEFT JOIN fms_case_summary caseSum on pmsInfo.id = caseSum.infoId
    LEFT JOIN fms_consult_summary consultSum on pmsInfo.id = consultSum.infoId
		LEFT JOIN crm_case_customer caseCustomer ON pmsInfo.id = caseCustomer.infoId
    LEFT JOIN crm_case_customer_feature customerFeature ON caseCustomer.id = customerFeature.customerId

where pmsInfo.isDeleted = false 
AND pmsInfo.id in(
65488,65489
)
AND pmsInfo.statusId IN (1,2,3,4,5,6,7,12,13)


結果:


根據不同的類型取不同表的字段:

(case when pmsInfo.categoryId = 135 THEN consultSum.amount ELSE caseSum.amount end) amount,
(case when pmsInfo.categoryId = 135 THEN DATE_FORMAT(consultSum.createTime,'%Y%m%d') ELSE DATE_FORMAT(caseSum.createTime,'%Y%m%d') end) statisticTime

如果categoryId 等於135,取consultSum表的amount 和 consultSum表的createTime。
如果不等於,取caseSum表的amount 和 caseSum表的createTime。並取別名


日期格式化:


DATE_FORMAT(consultSum.createTime,'%Y%m%d') :將日期格式化,例:(2019-01-10 00:00:00)—>20190110

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章