更改列的查询结果内容

时间:2013-05-29 07:13:55

标签: c# sql sql-server xml

这是我执行请求后的结果。

Category

K
O
I
P
Q
K

这是我需要的结果。

Category

Key
Non-Key
Intercompany
Non-Key
Non-Key
Key

我不在乎是否订购。要做到这一点,我有这个xml文件。

<BPCategories>
<BPCategory name="Core">
    <type value ="C"/>
</BPCategory>
<BPCategory name="Intercompany">
    <type value="I"/>
</BPCategory>
<BPCategory name = "Key">
    <type value="K"/>
</BPCategory>
<BPCategory name = "Non-Key">
    <type value="0"/>
    <type value="_"/>
    <type value="L"/>
    <type value="N"/>
    <type value="O"/>
    <type value="P"/>
    <type value="Q"/>
    <type value="S"/>
    <type value="V"/>
</BPCategory>
<BPCategory name="WOV">
    <type value="W"/>
</BPCategory>
</BPCategories>

所以我的问题是,是否可以在SQL查询中执行此操作?你必须知道我没有表格来处理类别之间的对应关系。即使有可能,通过在结果集上执行for循环来更改值是不是更好。事实上,我正在寻找在c#中执行此操作的最佳方法。

提前致谢;)。

2 个答案:

答案 0 :(得分:1)

查看SQL CASE表达式

答案 1 :(得分:1)

您可以使用select语句中的CASE轻松完成此操作

Select
CASE Category
WHEN 'K' THEN 'Key'
WHEN 'O' THEN 'Non-Key'
WHEN 'I' THEN 'InterCompany'
WHEN 'P' THEN 'Non-Key'
WHEN 'Q' THEN 'Non-Key'
WHEN 'K' THEN 'Key'
END as Category
FROM ...

假设这是MS-SQL服务器:http://msdn.microsoft.com/en-us/library/ms181765.aspx