2016-09-10 6 views
0

So habe ich einen Mitarbeiter Arbeitsplan und ich möchte Mitarbeiter-ID nach Tag-Namen für die Berichterstattung in Crystal Report Visual Studio 2012 C# auswählen.Wählen Sie die gleiche Spalte mit unterschiedlichen Alias ​​und unterschiedlichen Bedingungen

Datenbank

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  

Und ich habe versucht,

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

aber seine nur EmMonday zeigt, und wie EmThursday auch zeigt?

Wie diese unter

EmMonday | EmThursday 
    EM0001 | EM0003 
    EM0002 | EM0004 
    EM0003 | EM0001 
    EM0004 | EM0002 
+1

Können Sie angeben, wie Ihr Endergebnis aussehen soll? –

Antwort

1

FÜR 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 

Demo is here.

FÜR 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 und RowNumber() hier areUsed Nummer der Zeile, um anzuzeigen, über die wir montags und donnerstags beitreten werden.

T ist Ihr Tabellenname.

+0

es funktioniert! aber es zeigt nur Montag und Donnerstag. und wie wärs mit Montag-Sonntag? : D –

0

Sie, dass in einer Abfrage tun:

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

OP möchte, dass alle Montage nur in der 1. Spalte und Donnerstage nur in 2. erscheinen. Ihre Antwort wird einfach Liste aller Mon und Thu dupliziert in 2 Spalten erzeugen. – serhiyb

+0

fast, EmMonday zeigt EmTHursday auch. Hast du den Code ausprobiert? –

Verwandte Themen