Reputation: 157
I have this query in my DataTable SQL Statement, now I confuse, how to pass date parameter to this query, the date is only 2, startdate and enddate, but the date is repeated several times.
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
Upvotes: 2
Views: 63
Reputation: 6477
You can declare variables to hold those values as this:
DECLARE @sDate datetime, @eDate datetime
SET @sDate = '2015-12-01 00:00:00'
SET @eDate = '2015-12-31 00:00:00'
Then replace
CONVERT(DATETIME, '2015-12-01 00:00:00', 102)
with
@sDate
and
CONVERT(DATETIME, '2015-12-31 00:00:00', 102)
with @eDate
You can create a stored procedure also containing all this query and reciving those variables as parameters
CREATE PROCEDURE mySP @sDate datetime, @eDate datetime
AS
--Your query here
Upvotes: 3