选择具有给定范围的SQL表列

时间:2014-12-03 05:05:10

标签: sql sql-server-2008 range period

我在SQL数据库中有这个表

Acc ID   Perod1   Perod2   Perod3   Perod4   Perod5
---------------------------------------------------
1-001      30       40       70       80       70
2-002      50       60       80       60       70
3-004      60       70       80       50       40

我需要在给定范围内选择上面的“Perod”列。像“Perod1 to Perod3”或“Perod2 to Perod5”。需要编写一个SQL select查询,它可以选择具有给定范围的列。请帮帮我。

我需要SQL查询,如下所示

Select 
    Perod1, Perod2 
from 
    tbl_accPeriod 
where 
    AccID = '1-001' 

但是“Perod”列我应该能够动态提供。有一次它可以是“Perod1到Perod2”,下次应该是“Perod1到Perod4”。我想这样做而不添加IF条件。

1 个答案:

答案 0 :(得分:0)

我认为你应该试试这个,

DECLARE @SQLCols AS NVARCHAR(500)
DECLARE @SQLQuery AS NVARCHAR(500)
Declare @from int = 1
Declare @to int = 2

Set @SQLCols = 'Perod' + Cast(@from as Varchar(10))

WHILE(@from < @to)

BEGIN

        Set @SQLCols = @SQLCols + ',Perod' + Cast(@from + 1 as Varchar(10))   

        SELECT @from = @from + 1

END

Set @SQLQuery = 'Select ' + @SQLCols + ' from tbl_accPeriod'

execute @SQLQuery