簡體   English   中英

選擇具有不同別名和不同條件的同一列

[英]Select same column with different alias and different conditions

因此,我有一個員工工作時間表,我想按天名稱選擇員工ID,以便在Crystal Report Visual Studio 2012 C#中進行報表。

數據庫

  Employee_ID  |   DayName   | WorkStart 
    EM0001     |   Monday    |  Morning  
    EM0002     |   Monday    |  Morning  
    EM0003     |   Monday    |  Noon     
    EM0004     |   Monday    |  Noon     
    EM0003     |   Thursday  |  Morning  
    EM0004     |   Thursday  |  Morning  
    EM0001     |   Thursday  |  Noon     
    EM0002     |   Thursday  |  Noon     

我試過了

SELECT Employee_ID as EmMonday FROM table WHERE dayName = 'Monday'
UNION
SELECT Employee_ID as EmThursday FROM table WHERE dayName = 'Thursday';

但是它只顯示EmMonday,而EmThursday也顯示了什么?

像下面這樣

 EmMonday | EmThursday 
  EM0001  |   EM0003   
  EM0002  |   EM0004   
  EM0003  |   EM0001   
  EM0004  |   EM0002   

對於MySQL

SET @rank1=0;
SET @rank2=0;

select t1.Employee_ID as EmMonday, t2.Employee_ID as EmThursday from 
(SELECT @rank1 := @rank1+1  as id, Employee_ID FROM T WHERE dayName = 'Monday' ) as t2
left join 
(SELECT @rank2 := @rank2+1  as id, Employee_ID FROM T WHERE dayName = 'Thursday') t1 on t1.id = t2.id

演示在這里。

對於MSSQL:

select t1.Employee_ID as EmMonday, t2.Employee_ID as EmThursday from 
(SELECT ROW_NUMBER() OVER (ORDER BY Employee_ID) as id, Employee_ID FROM T WHERE dayName = 'Monday' ) as t1
left join 
(SELECT ROW_NUMBER() OVER (ORDER BY Employee_ID) as id, Employee_ID FROM T WHERE dayName = 'Thursday') t2 on t1.id = t2.id

rankRowNumber()表示星期一和星期四將加入的行數。

T是您的表名。

您可以在一個查詢中執行此操作:

SELECT Employee_ID as EmMonday, Employee_ID as EmThursday 
FROM table 
WHERE dayName = 'Monday' or dayName = 'Thursday'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM