2013-06-29 92 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

的答案會告訴你如何做到這一點。我會建議一個不同的設計,將質量屬性和量化屬性放在自己的專欄中。數據類型是你的朋友。 – 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

您可以使用ISNUMERICCASE

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

我希望它在邏輯中使用列名'fruit',而不是'value'列中的數據類型。 –