Sql server C将重复参数传递给DataTable SQL语句

Sql server C将重复参数传递给DataTable SQL语句,sql-server,Sql Server,我的DataTable SQL语句中有这个查询,现在我搞不清楚,如何将日期参数传递给这个查询,日期只有2,startdate和enddate,但是日期重复了好几次 SELECT (SELECT COUNT(shift) AS Expr1 FROM dbo.JadwalKerja

我的DataTable SQL语句中有这个查询,现在我搞不清楚,如何将日期参数传递给这个查询,日期只有2,startdate和enddate,但是日期重复了好几次

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

您可以声明变量来保存这些值,如下所示:

DECLARE @sDate datetime, @eDate datetime

SET @sDate = '2015-12-01 00:00:00'
SET @eDate = '2015-12-31 00:00:00'
然后替换 CONVERTDATETIME,'2015-12-01 00:00:00',102 具有 @斯代特 和 CONVERTDATETIME,'2015-12-31 00:00:00',102带@eDate

您可以创建一个存储过程,其中也包含所有这些查询,并将这些变量作为参数接收

CREATE PROCEDURE mySP  @sDate datetime, @eDate datetime
AS
--Your query here