【问题标题】:Change the column's content of a query result更改查询结果的列内容
【发布时间】:2013-05-29 07:13:54
【问题描述】:

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

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# 中执行此操作的最佳方法。

提前致谢;)。

【问题讨论】:

    标签: c# sql sql-server xml


    【解决方案1】:

    您可以在选择语句中使用 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

    【讨论】:

      【解决方案2】:

      查看 SQL CASE 表达式

      【讨论】:

      • 我知道 CASE 表达式,但这是最好的方法吗?事实上,我的查询大约有 40 行,在此查询中包含由 xml 生成的 CASE 表达式会很棘手。有没有其他方法?性能怎么样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2020-10-31
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多