2016-08-06 3 views
-1

Можно ли выбрать столбец на основе предложения where? У меня есть таблица в SQL Server 2012 с кодом продавца и все двенадцать месяцев в формате чисел (01 = январь, 02 = февраль, 03 = март и т. Д.). Строки составляют долларовые суммы для показателей продаж.SQL Server Выберите столбец на основе запроса

Я хочу, чтобы иметь возможность выбирать строку из определенного месяца и код продавца. Моя логика в основном выбирает сумму из таблицы Where Column = 07 и Code = 100.

Так что в основном в таблице ниже, как выбрать строку для марта и код продавца 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|  ...  | 
+-----------------------------------+------------+-------------+ 
+0

Пожалуйста, ваши схемы таблицы и выяснить, что именно вы пытаетесь сделать. Я не понимаю. Вы пытаетесь динамически определять столбец для поиска или пытаетесь выполнить поиск по нескольким столбцам? –

+1

Извините - я добавил базовую схему таблицы. Я пытаюсь динамически определить столбец для поиска. – MrPeanutbutter

ответ

-1

Вы должны иметь другую таблицу:

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

Чтобы получить табличные значения, как вы показали, потребуется Поворотная данные, но и все остальное будет намного проще/быстрее извлечь. Как это:

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

Я думаю, что OP предназначался для 'Column = 07' для обозначения« Поиск в седьмом столбце », а не для столбца с именем' Column'. Если бы это было так просто, OP просто выполнил бы этот запрос. –

+0

@Robert Columbia Ваш хрустальный шар лучше, чем мой, потому что у меня его нет. –

+1

Извините, ребята, я уточнил вопрос. Я не мог понять, как добавить схему таблицы до сих пор. – MrPeanutbutter

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 
Смежные вопросы