Itu mungkin, tetapi memerlukan penggunaan SQL dinamis.
Saya sarankan membaca Kutukan dan berkah dinamis SQL
sebelum melanjutkan...
DECLARE @theDate varchar(60)
SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59'''
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT AdministratorCode,
SUM(Total) as theTotal,
SUM(WOD.Quantity) as theQty,
AVG(Total) as avgTotal,
(SELECT SUM(tblWOD.Amount)
FROM tblWOD
JOIN tblWO on tblWOD.OrderID = tblWO.ID
WHERE tblWO.Approved = ''1''
AND tblWO.AdministratorCode = tblWO.AdministratorCode
AND tblWO.OrderDate BETWEEN '+ @theDate +')'
EXEC(@SQL)
SQL Dinamis hanyalah pernyataan SQL, disusun sebagai string sebelum dieksekusi. Jadi rangkaian string yang biasa terjadi. SQL dinamis diperlukan setiap kali Anda ingin melakukan sesuatu dalam sintaks SQL yang tidak diizinkan, seperti:
- parameter tunggal untuk mewakili daftar nilai yang dipisahkan koma untuk klausa IN
- variabel untuk mewakili nilai dan sintaks SQL (IE:contoh yang Anda berikan)
EXEC sp_executesql
memungkinkan Anda untuk menggunakan parameter bind/preparedstatement sehingga Anda tidak perlu khawatir dengan keluarnya tanda kutip tunggal/dll untuk serangan injeksi SQL.