2014-02-13 52 views
0

我有名字EMP,DEPT兩個表的組合,現在我需要聲明的結合意味着表emp的我有名字EMP,部分三個表,現在鍵入我需要聲明

empid | deptid | fulltime | parttime | contracttime

dept表

section id | dept id等一些列作爲n非常需要。

現在emp表:

empid | dept id | fulltime | parttime | contrattime 
---------------------------------------------------- 
    1 | 1  | 0  | 0  | 1  
    2 | 1  | 1  | 1  | 0 

等等都在那裏,而且在dept表 有7排像 部分ID和部門ID如下

 1 1 
    2 1 
    3 1 
    4 1 
    5 1 
    6 1 
    7 1
這些現在我想如果列 全職兼職時間
 if 0 0 1 then it should go to section id 1 
if 1 1 0 then section id 2 
if 1 1 1 then section id 3 
if 1 0 1 then section id 4 
if 0 1 1 then section id 5 
if 1 0 0 then section id 6 
if 0 1 0 then section id 7

+0

你試過什麼嗎? –

+0

查詢中的IF語句是[CASE](http://www.tizag.com/sqlTutorial/sqlcase.php) – winkbrace

回答

0

您可以使用CASE語句加入這樣的:

select * 
     from emp e 
     join dept d 
      on d.deptid = e.deptid 
      and (case 
        when e.fulltime = 0 and e.parttime = 0 and e.contracttime = 1 then 1 
        when e.fulltime = 1 and e.parttime = 1 and e.contracttime = 0 then 2 
        when e.fulltime = 1 and e.parttime = 1 and e.contracttime = 1 then 3 
        when e.fulltime = 1 and e.parttime = 0 and e.contracttime = 1 then 4 
        when e.fulltime = 0 and e.parttime = 1 and e.contracttime = 1 then 5 
        when e.fulltime = 1 and e.parttime = 0 and e.contracttime = 0 then 6 
        when e.fulltime = 0 and e.parttime = 1 and e.contracttime = 0 then 7 
        else 0 
       end) = d.sectionid; 

這裏唯一的問題可能是性能,因爲索引不會被使用,除非您創建一些複雜的函數索引。

相關問題