SQL Server根据查询位置选择列

时间:2016-08-06 00:59:18

标签: sql sql-server select where

我可以根据where子句选择列吗?我在SQL Server 2012中有一个表,其中有一个销售员代码,所有十二个月的数字格式(01 = 1月,02 = 2月,03 = 3月等)。这些行是销售数字的美元金额。

我希望能够从特定月份和销售员代码中选择一行。我的逻辑基本上是从表中选择数量,其中列= 07,代码= 100。

所以基本上在下表中,我如何选择March的行和销售员代码200(10006)。

+-----------------------------------+------------+-------------+
| SalesPersonCode  | Jan | Feb | Mar | Apr | Jun | and so on...|
+-----------------------------------+------------+-------------+
| 100              |50003|13232|66565|65656|96656|     ...     |
| 200              |65653|43432|10006|65236|23236|     ...     |
| 300              |32131|43432|44343|56563|21212|     ...     |
+-----------------------------------+------------+-------------+

2 个答案:

答案 0 :(得分:0)

假设我理解了您的问题,您的表格中会有一个salescode列和另外12列,每个月一个,每个列都存储一个amount,您希望通过传入一个参数?

如果是这样,这里有一个选项,每个月使用case语句:

select salescode, 
       case when @column = 1 then month1
            when @column = 2 then month2
            ...
            when @column = 12 then month12
       end as amount
from yourtable
where salescode = @salescode

答案 1 :(得分:-1)

你必须有不同的表格:

CREATE TABLE tbl_Sales(
SalesPersonCode INT,
Period SMALLINT,
Value INT
)
GO

要获得显示的表值,需要透视数据,但对于其他所有内容,提取它将更容易/更快。像这样:

SELECT Value FROM tbl_Sales
WHERE SalesPersonCode = 100 and Period = 1607;