2015-09-09 18 views

回答

0

你可以在where子句中使用Between操作符,並且添加一個INT列作爲between將不會在我猜的nvarchar上工作。

  Create table #temp(
      data int, 
      dayN Nvarchar(100) 
      ,dayc int 
      ) 
      SELECT * FROM #TEMP 
      Insert into #temp values (10,'Monday',2) 
      Insert into #temp values (20,'tuesday',3) 
      Insert into #temp values (30,'wednesday',4) 
      Insert into #temp values (40,'thursday',5) 
      Insert into #temp values (50,'friday',6) 

      SELECT Data 
      FROM #TEMP 
      where dayN between 'Monday' and 'Wednesday' 
      --Above query gives wrong result 

      SELECT Data 
      FROM #TEMP 
      where dayC between 3 and 6 
0

你可以做以下中:

declare @tbl table (WeekStartDate nvarchar(60),WeekEndDate nvarchar(60)) 
insert into @tbl values ('Monday', 'Friday') 

declare @weeknums table (name nvarchar(60), num int) 
insert into @weeknums values 
('Monday' , 1), 
('Tuesday' , 2), 
('Wednesday' , 3), 
('Thursday' , 4), 
('Friday' , 5), 
('Saturday' , 6), 
('Sunday' , 7) 

declare @min nvarchar(max) = (select min(num) 
           from @tbl t 
           join @weeknums w on t.WeekStartDate = w.name or t.WeekEndDate = w.name) 

declare @max nvarchar(max) = (select max(num) 
           from @tbl t 
           join @weeknums w on t.WeekStartDate = w.name or t.WeekEndDate = w.name) 

select w.* 
from @weeknums w 
where w.num between @min and @max 
相關問題