Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL-Server:Cú pháp không chính xác gần từ khóa 'with'. Nếu câu lệnh này là một biểu thức bảng thông thường

Thêm một số dấu chấm phẩy:

create table #temp
(
  pName Varchar(20),
  DateBegin DateTime,
  DateEnd DateTime
)

Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player1', '01/04/2012', '01/05/2012')

Insert Into #temp(pName, DateBegin, DateEnd)
Values('Player2', '02/01/2012', '02/05/2012');

With DateRange(dt) As
(
    Select Convert(Datetime, '01/01/2012')
    UNion All
    Select DateAdd(dd, 1, Dat.dt) From DateRange Dat Where Dat.dt < CONVERT(Datetime, '01/31/2012')
)

Select T.pName, Dt.dt from #temp T
Inner Join DateRange Dt on Dt.dt BETWEEN T.DateBegin and T.DateEnd;

Drop Table #temp

http://sqlfiddle.com/#!6/06e89



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa Sql:Xml hoặc Chuỗi phân cách

  2. Cách kiểm tra xem một thủ tục được lưu trữ có tồn tại hay không trước khi tạo nó

  3. Làm thế nào để sử dụng OUTPUT để nắm bắt ID mới và cũ?

  4. Làm cách nào để truy xuất danh sách các tham số từ một thủ tục được lưu trữ trong SQL Server

  5. Tự động thay đổi kiểu trả về của một hàm