2016-11-19 88 views
0

我需要幫助,使計劃表從我的表員工的主要問題是該行沒有從第一行開始在每列,因此該行一直在繼續,見下圖:如何從SQL Server 2012製作計劃表查詢?

Table

我們可以請參閱下一列在第一行爲空,並從最後一行繼續。這是我的查詢和表關係,你可以在下面看到它。

enter image description here

SELECT  (SELECT  PEGAWAI.NAMAPEGAWAI 
         WHERE  (JADWAL.HARIKERJA = 'Tuesday')) AS Selasa, 
         (SELECT  PEGAWAI.NAMAPEGAWAI 
          WHERE  (JADWAL.HARIKERJA = 'Wednesday')) AS Rabu, 
         (SELECT  PEGAWAI.NAMAPEGAWAI 
          WHERE  (JADWAL.HARIKERJA = 'Thursday')) AS Kamis, 
         (SELECT  PEGAWAI.NAMAPEGAWAI 
          WHERE  (JADWAL.HARIKERJA = 'Friday')) AS Jumat, 
         (SELECT  PEGAWAI.NAMAPEGAWAI 
          WHERE  (JADWAL.HARIKERJA = 'Sabtu')) AS Saturday, 
         (SELECT  PEGAWAI.NAMAPEGAWAI 
          WHERE  (JADWAL.HARIKERJA = 'Monday')) AS Minggu FROM   JADWAL INNER JOIN 
        JADWALPEGAWAI ON JADWAL.IDJADWAL = JADWALPEGAWAI.IDJADWAL INNER JOIN 
        PEGAWAI ON JADWALPEGAWAI.IDPEGAWAI = PEGAWAI.IDPEGAWAI WHERE  (JADWAL.SHIFT = 'I') 
+1

嗨,歡迎來到SO。如果您將查詢作爲文本置於問題中,而不是圖片,它將真正幫助那些想要回答您的問題的人。同樣的表格。 – mendosi

+0

已經將查詢作爲文本。謝謝 –

+0

作爲查詢輸出的一部分,您試圖爲員工構建什麼樣的時間表?您是否想知道 - 所有員工在一週中的特定日期都輪班?您是否試圖爲您的員工創建一個每週花名冊作爲查詢輸出?如果我理解正確,PEGAWAI包含所有員工的名單。 'JADWALPEGAWAI'是一個關係表。 JADWAL表包含了什麼? – RBT

回答

0

什麼似乎導致您的查詢並不表現爲你想到,就是你必須在你的查詢中沒有GROUP BY條款,這意味着你得到的輸出,每一列都爲(在這種情況下)JadwalPegawai表的每一行。

至少,你WHERE …條款應該修改之後增加GROUP BY Pegawai.NamaPegawai,但我認爲我們可以做得更好:

Select Min(iif(j.Harikerja = 'Tuesday', p.NamaPegawai, Null)) As Selasa, 
    Min(iif(j.Harikerja = 'Wednesday', p.NamaPegawai, Null)) As Rabu, 
    … 
    From Jadwal As j 
    Join JadwalPegawai As jp On j.IdJadwal = jp.IdJadwal 
    Join Pegawai As p On jp.IdPegawai = p.IdPegawai 
    Where j.Shift = 'I' 
    Group By p.NamaPegawai; 

這應該是邏輯上等同,但不使用子查詢。希望我沒有犯任何拼寫錯誤,我不太擅長印度尼西亞...

+0

非常感謝我添加了「通過p.NamaPegawai訂購」;現在它的工作是我想要的。 –

+0

我的意思是「order by p.NamaPegawai desc;」謝謝。 –