Có thể, nhưng nó yêu cầu sử dụng SQL động.
Tôi khuyên bạn nên đọc Lời nguyền và phước lành của động SQL
trước khi tiếp tục ...
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 động chỉ là một câu lệnh SQL, được tạo thành một chuỗi trước khi được thực thi. Vì vậy, nối chuỗi thông thường xảy ra. SQL động là bắt buộc bất cứ khi nào bạn muốn làm điều gì đó trong cú pháp SQL không được phép, như:
- một tham số duy nhất để biểu thị danh sách giá trị được phân tách bằng dấu phẩy cho mệnh đề IN
- một biến đại diện cho cả giá trị và cú pháp SQL (IE:ví dụ bạn đã cung cấp)
EXEC sp_executesql
cho phép bạn sử dụng các tham số ràng buộc / chuẩn bị sẵn sàng để bạn không phải lo lắng về việc thoát các dấu ngoặc kép / v.v ... đối với các cuộc tấn công chèn SQL.