奇葩需求之寫不完的樹目錄

2021-08-15 07:30:17 字數 1927 閱讀 4526

需求:資料庫行轉列關聯查詢兩張表得出以下資料表(前提),然後再根據多個任意字段(有序)分組顯示,選出的目錄拼成樹目錄結構,下圖是前提資料表

行轉列sql語句:select a.id,a.serial_no as column1,a.title as column2,a.project_type as column3,a.amount as column4,a.spec as column5,a.unit as column6,max(case b.title when '族名' then b.value end ) column7,max(case b.title when '族型別名' then b.value end ) column8,max(case b.title when '構件id' then b.value end ) column9,max(case b.title when '高度' then b.value end ) column10,max(case b.title when '規格' then b.value end ) column11,max(case b.title when '系統型別' then b.value end ) column12,max(case b.title when '長度' then b.value end ) column13,max(case b.title when '附加長度' then b.value end ) column14 from excel_parse_data b left join excel_ori_data a on a.id=b.ori_id where b.file_id=3 group by b.ori_id order by column10 desc; 注:max函式列是後台動態新增

行轉列語法解說:如:max(case b.title when '高度' then b.value end ) column10,max沒實質意義,相當於把b表迴圈一遍,如果title欄位的值等於「高度」,將value欄位的值提到查詢結果集得增加列,定義改列名為column10(簡單來說b表有title和value欄位,行轉列根據b表的title值case,when,提取它的value值)

樹目錄理解如圖:(粉紅色是【一級分組】欄位的第乙個值,下面同色的是改字段的第二個值,然後藍色是二級分組,黃色是**分組,灰色是同事符合這三組分組的資料(在前提表挑選出來))

拼接樹目錄**如下(思路:sqlite(n-1)次聚合查詢(n是多少列分組條件,第一列不用聚合,第二列起每次查詢都是最後一列聚合),在每次查詢獲取的結果集拼樹結構,用到遞迴),程式**如下:

/**

* 根據分組條件拼接樹目錄

* @param ordertitles

* @return

*/private listmaketreelist(string ordertitles)

}//資料庫聚合函式拼樹結構

stringbuilder columnstring=new stringbuilder();

int j=0;

for(string column : columns)else

if(columnstring.length()>0)else

j++;

//動態拼接sql語句(把行轉列查出的資料表看做是乙個表/子查詢)

stringbuilder sql=new stringbuilder();

for(int i=6;itreelist, resultset rs,int index,int lastcolumn) throws sqlexception

}}else

break;

}}

}

乙個奇葩的需求

今天和朋友聊天突然給我說拍一下錄取通知書封面,一解釋原因原來是小夥伴碰到了乙個奇葩需求。拍攝內容 錄取通知書封面 拍攝要求 1 拍攝角度在通知書正上方,通知書要是原來的形狀,不要產生形變。主要內容為通知書,通知書邊上留一部分空白 2 最好用相機,用手機拍的話發原圖 3 拍攝時在明亮處拍攝,同時通知書...

聽說你的需求做不完

需求太多,是程式設計師們共同面對的困局。從前端到後端 從資料到分析 從互動到測試,幾乎每個人都很忙。大公司的用人標準,早期有乙個很常見的說法,叫作 三個程式設計師,拿四個人的工資,做五個人的事情 在行業高速發展期,給更多的錢,確實非常吸引人。但後來,行業發展不像早期那麼快速,內捲的趨勢隱隱然在加劇,...

使用WinAPI寫的小串列埠(不完善無法接收)

利用mfc建立乙個單文件程式。注意自動建立時,一下條目不選中 隱藏工具欄,初始化狀態列。視類以ceditview類作為基類。介面設計,設定乙個對話方塊,進行串列埠設定。在選單項中新增乙個 通訊 選單,新增三個命令子選單,分別是 串列埠設定 開啟串列埠 關閉串列埠 變數宣告 先在檢視類中新增 incl...