突如其來的MySQL報表

2021-10-13 12:31:51 字數 3252 閱讀 4173

突然收到個需求,要求匯出乙份資料:

1、如處理詳情資料多行資料合併為一行

2、型別字段:是,否,其他,為否的值沒有入口,需指定為否

主表,附屬的型別表,系統表,處理記錄表,產品表

select

*from test_case ic where id=

11007750

;--主表

select

*from test_case_business_type where relevance_id=

11007750

--型別表

select

*from test_case_subsystem ic where case_id=

11007750

;--系統表

select

*from test_case_handle_detail ic where case_id=

11007750

;--處理記錄表

select

*from test_event_belong_detail where event_id=

11007750

--產品表

子系統,產品,處理步驟,型別都有可能乙個主表資料 對應多行;如乙個主資料中包含多個子系統,多個產品,多個處理步驟,多個型別,用group_concat 函式處理;

型別為否時,不存在關聯資料,預設賦值為否,使用 coalesce 函式處理,有點像nvl;

--合併多行資料

select group_concat(is_financial_bus separator ','

)from test_case_business_type where relevance_id=

11000411

;--給null賦值,這個值有 是否其他,3個選項,否為空

select ic.id,

coalesce

(icbt.is_financial_bus,

'否')

from test_case ic left

join test_case_business_type icbt on ic.id=icbt.relevance_id;

--產品

select group_concat(ieb.event_belong_name separator ',')as

'產品'

from test_event_belong ieb, test_event_belong_detail iebd where ieb.id=iebd.belong_id and iebd.event_id=

11007750

;--子系統

select group_concat(ics.system_en_name separator ',')as

'子系統'

from test_case_subsystem ics where ics.case_id=68;

--處理詳情

select group_concat(ichd.operate_detail separator ',')as

'處理詳情'

from test_case_handle_detail ichd where ichd.case_id=

11007917

;

group_concat 

1、功能:將group

by產生的同乙個分組中的值連線起來,返回乙個字串結果。

2、語法:group_concat(

[distinct

] 要連線的字段 [

order

by 排序字段 asc

/desc

][separator '分隔符'])

說明:通過使用distinct可以排除重複值;如果希望對結果中的值進行排序,可以使用order

by子句;separator是乙個字串值,預設為乙個逗號。

coalesce

coalesce

(value

,…)是乙個可變參函式,可以使用多個引數。

作用:接受多個引數,返回第乙個不為null的引數,如果所有引數都為null,此函式返回null;當它使用2個引數時,和ifnull函式作用相同。

這個引數使用的場合為:假如某個字段預設是null,你想其返回的不是null,而是比如0或其他值,可以使用這個函式

select ic.id as

'id'

,ic.event_title as

'標題',(

select basekey_name from test_event_basekey where id=ic.event_status)

as'狀態'

,ic.event_create_date as

'上報時間'

,ic.event_desc as

'上報內容',(

select group_concat(ichd.operate_detail separator ','

)from test_case_handle_detail ichd where ichd.case_id=ic.id)

as'處理詳情',(

select group_concat(ics.system_en_name separator ','

)from test_case_subsystem ics where ics.case_id=ic.id)

as'子系統',(

select group_concat(ieb.event_belong_name separator ','

)from test_event_belong ieb, test_event_belong_detail iebd where ieb.id=iebd.belong_id and iebd.event_id=ic.id)

as'產品'

,ic.handler_team_id as

'處理組'

,ic.event_handler as

'處理人'

,coalesce((

select group_concat(is_financial_bus separator ','

)from test_case_business_type where relevance_id=ic.id)

,'否')as

'金融業務'

from test_case ic ;

突如其來的感冒

最近學校裡感冒的似乎比較多.本來我一直還好好的,昨天上午起來的時候有點鼻塞,到了下午已經變得很嚴重了,並伴隨著咳嗽與頭暈.這個感冒實在來的太 不是時候了,我今明兩天連續兩場考試,而且還基本沒看過書.今天早上吃了顆感冒藥,結果一上午昏昏沉成的,在自習室睡了會,看書的時候大腦cpu根本不運轉.下午考試時...

突如其來的考試

突如其來的考試,本來是安排的晚上進行一階段的結束考試的,但是很不幸我們早上就開始了。為什麼說突如其來呢,其實是自己沒準備好,本來這事兒都提前說了幾天了,是自己執行力不到位,沒複習複習。剛開始的時候,感覺題還行,做著做著就開始懷疑人生了,在電腦面前一頓操作猛如虎,點了run之後才感覺自己就是個弟弟,這...

突如其來的電話面試

昨天晚上在公司吃完飯後回到工位準備加班,習慣性的拿手機看了一下情況,乙個未接來電,看下號碼0571 我還說誰會給我打長途呢,於是又回撥了乙個,就聽到乙個甜美的聲音 歡迎致電阿里巴巴 當時心情那個激動啊,手都發抖了,可是不知道分機號,於是掛掉了,等吧。不一會兒,又打來乙個,於是聊開了,做乙個 面試。過...