2013-06-29 3 views
0

Только что начал использовать SQL Server. Кажется, это должно быть очень просто, но пока не нашли ответа.Динамический выбор SQL Server столбца вывода

Попытка перейти от этого:

id fruit value 
1 apple 10 
2 orange a 
3 orange b 
4 apple 20 
5 apple 30 

Для этого:

fruit quantitative qualitative 
apple 10 NULL 
orange NULL a 
orange NULL b 
apple 20 NULL 
apple 30 NULL 

Что-то вроде ...

  • Если яблоко -> поместить значение в колонке 2, колонка 3 = NULL
  • Если оранжевый -> введите значение в столбец 3, столбец 2 = NULL

Спасибо!

+0

ответы покажет вам, как это сделать. Я бы посоветовал другой дизайн, чтобы начать с качественных свойств и количественных свойств в своих собственных столбцах. Datatypes - ваши друзья. – Tim

ответ

3
select 
fruit, 
case when fruit = 'apple' then value else null end as quantitative, 
case when fruit = 'orange' then value else null end as qualitative 
from mytable 

SqlFiddle

3

Вы можете использовать ISNUMERIC и CASE:

SELECT fruit, 
     quantitative=CASE WHEN ISNUMERIC(value)=1 THEN value ELSE NULL END, 
     qualitative=CASE WHEN ISNUMERIC(value)=0 THEN value ELSE NULL END 
FROM dbo.Fruits 

Demo

FRUIT QUANTITATIVE QUALITATIVE 
apple 10    (null) 
orange (null)   a 
orange (null)   b 
apple 20    (null) 
apple 30    (null) 
+0

Я бы хотел, чтобы вместо столбца «значение» вместо столбца «значение» использовалось имя столбца «фрукты». –

Смежные вопросы