2016-01-23 2 views
2

У меня есть этот запрос в моем заявлении SQL DataTable, теперь я путаю, как передать параметр даты этому запросу, дата только 2, startdate и enddate, но дата повторяется несколько раз.C# передать повторяющийся параметр в SQLTate DataTable

SELECT   
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'B' OR 
                 shift = 'E' OR 
                 shift = 'F' OR 
                 shift = 'G' OR 
                 shift = 'H' OR 
                 shift = 'J' OR 
                 shift = 'P') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS P, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_8 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'B' OR 
                 shift = 'N' OR 
                 shift = 'O' OR 
                 shift = 'S' OR 
                 shift = 'T') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS S, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_7 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'B' OR 
                 shift = 'M' OR 
                 shift = 'Q') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS M, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_6 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'C') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS C, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_5 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'D') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS D, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_4 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'I') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS I, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_3 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'K') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS K, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_2 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'L') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) AS L, 
          (SELECT  COUNT(shift) AS Expr1 
           FROM   dbo.JadwalKerja AS JadwalKerja_1 
           WHERE  (nip = dbo.JadwalDinas_DaftarKaryawan.NIP) AND (shift = 'R') AND (date >= CONVERT(DATETIME, '2015-12-01 00:00:00', 102)) AND (date <= CONVERT(DATETIME, '2015-12-31 00:00:00', 102))) 
         AS R 
FROM   dbo.JadwalDinas_DaftarKaryawan 
ORDER BY Nama 

ответ

3

Вы можете объявить переменные для хранения этих значений, как это:

DECLARE @sDate datetime, @eDate datetime 

SET @sDate = '2015-12-01 00:00:00' 
SET @eDate = '2015-12-31 00:00:00' 

Затем замените CONVERT(DATETIME, '2015-12-01 00:00:00', 102) с @sDate и CONVERT(DATETIME, '2015-12-31 00:00:00', 102) с @eDate

Вы можете создать хранимую процедуру, также содержащий весь этот запрос и возвращающий эти переменные a s

CREATE PROCEDURE mySP @sDate datetime, @eDate datetime 
AS 
--Your query here 
Смежные вопросы