見示例:mysql
一、 報表中一般咱們的sql語句是這樣寫的:selects.student_name_,s.grade_,s.subject_name_ from student s,編譯,運行以後,咱們會看到如圖1的結果,(注意:列頭的排序結果是數學、英語、語文)sql
圖1數據庫
可是若想讓列頭的排列順序是:語文、數學、英語,這要怎麼辦呢?可能有的人要說了,在sql語句中加個order by語句就ok了,嗯,的確哦,在數據庫中是能夠的,或許碰巧在您的報表中也會就能獲得您想要的結果,但那僅僅是「碰巧」哦,這裏我要向你們介紹的是另外一種實現您的報表列頭排序的方法!函數
二、 在您的sql語句中動一下「手腳」,把須要在報表中的列中顯示的內容以別名顯示,例如寫成這樣的:.net
select s.student_name_,s.grade_, case to_char(s.subject_name_) when to_char('語文') then to_char('A語文') when to_char('數學') then to_char('B數學') when to_char('英語') then to_char('C英語') end as subject from student s orderby s.subject_name_ desc,
運行的結果如圖2所示:code
圖2排序
三、 由於報表中顯示了多餘的字段,因此呢,咱們就要想辦法把多出來的字符串去掉!如圖3點擊Crosstab1到交叉報表的頁面,單擊顯示列標題的文本框,在窗體的右側就會顯示該文本框的屬性字符串
圖3get
四、 如圖4所示:在屬性窗口中找到TextField Expression屬性,點擊最右邊的「…」按鈕數學
圖4
五、 如圖5.1所示,在黑色光標處寫函數substring,結果如圖5.2所示,而後單擊【肯定】
圖5.1
圖5.2
六、 編譯,預覽的效果如圖6所示
圖6
至此,就實現了咱們想要的功能了!還有一個小問題,不知您看出來沒有啦,就是:我添加了A、B、C後,報表就按照指定的順序出來了,其實呢,iReport是按照首個字符的ASCII碼來排序的呢,ok!就這樣了!