2016-11-19 87 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;”谢谢。 –