![](/img/trans.png)
[英]How to select the same field twice with different conditions and display results as separate fields
[英]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
rank
和RowNumber()
表示星期一和星期四將加入的行數。
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.