如何将值拆分为不同的列?

时间:2014-02-25 12:07:31

标签: sql sql-server

这就是我所拥有的

|name|surname|job       |
|Mike|Watson |programmer|
|Josh|White  |manager   |

我需要做的是:

|name|surname|programmer|manager|
|Mike|Watson |programmer|null   |
|Josh|White  |null      |manager|

最简单的方法是什么,也许不使用附加临时表?

此致

2 个答案:

答案 0 :(得分:1)

这是case表达式的简单应用:

select name, surname,
       (case when job = 'manager' then job end) as manager,
       (case when job = 'programmer' then job end) as programmer
from table t;

请注意,您需要为每列编写特定逻辑。您不能使用SQL根据行中的内容添加可变数量的列。因此,如果添加“intern',则必须为此值添加逻辑。

我也不清楚为什么你想要一个带有NULL列或列名的列。据推测,你有充分的理由。

答案 1 :(得分:0)

你可以使用case和group by或pivot方法来解决它。