星期三, 11月 01, 2023

2001-11-08 如何使 SQL 查詢結果加上顏色分類,以快速分辨所要的資料?


如何使 SQL 查詢結果加上顏色分類,以快速分辨所要的資料?

當我們觀看 SQL 的查詢結果時,我們無法得到警示性的圖形,如果我們想要查詢客戶的銷售狀況,
若能依不同的銷售量區間並給予各區間不同的顏色來顯示查詢結果,將會給予使用者較容易找到較
重要的警示性資料。
為了要在查詢結果中顯示不同的顏色,我們需要於顯示資料前加入顏色的屬性於欄位或行,我們所
用的屬性如下:

x'20' 正常 Normal
x'21' 反白 Reverse
x'22' 高亮度 HI
x'23' 高亮度反白 HI reverse
x'28' 紅色 Red
x'29' 紅色反白 Red reverse
x'2A' 閃爍 Blink
x'2B' 閃爍反白 Blink reverse

為了要定義警示性區間,我們使用 SQL CASE 指令,類似 RPG IV 的 CASE 指令

+-------------------------------------------------------------------------------+
|                                                                               |
|                                                                               |
|                                    +-ELSE NULL---------------+                |
| >--CASE----searched-when-clause----+-------------------------+--END---------> |
|          +-simple-when-clause---+  +-ELSE--result-expression-+                |
|                                                                               |
| searched-when-clause:                                                         |
|    <-----------------------------------------------------+                    |
| +----WHEN--search-condition--THEN----result-expression----------------------| |
|                                    +-NULL--------------+                      |
|                                                                               |
| simple-when-clause:                                                           |
|                <-----------------------------------------------+              |
| +--expression----WHEN--expression--THEN----result-expression----------------| |
|                                          +-NULL--------------+                |
|                                                                               |
+-------------------------------------------------------------------------------+

在底下的例子中,我們顯示系統中檔案欄位數超過 100個的檔案,反白區是檔案欄位數超過 250 個,
紅色區是檔案欄位數超過 1000 個,紅色閃爍區是檔案欄位數超過 2500 個。

啟動 SQL --> STRSQL

                             Enter SQL Statements                              
                                                                               
Type SQL statement, press Enter.                                               
===> SELECT CASE                                                               
            WHEN count(*) > 2500 THEN (X'2A'||SYSTEM_TABLE_SCHEMA||X'28')      
            WHEN count(*) > 1000  THEN (X'28'||SYSTEM_TABLE_SCHEMA)            
            WHEN count(*) > 250 THEN (X'22'||SYSTEM_TABLE_SCHEMA)              
            else (' '||SYSTEM_TABLE_SCHEMA)                                    
            end  AS LIB,                                                       
            SYSTEM_TABLE_NAME AS TABLE,                                        
            COUNT(*) AS FIELDS                                                 
     FROM QSYS2/SYSCOLUMNS                                                     
     group by system_table_schema, system_table_name                           
     having count(*) > 100                                                     
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                       Bottom  
F3=Exit   F4=Prompt   F6=Insert line   F9=Retrieve   F10=Copy line             
F12=Cancel            F13=Services     F24=More keys                           
                                                                               

            

沒有留言: