如何在T-sql命名时切换sql-2005选择案例?

时间:2008-12-23 09:37:41

标签: sql sql-server sql-server-2005 tsql

select 
(Case Remark01
When 'l1' then type1
when 'l2' then type2
end) AS [?] --Remark .....want to switch name in here
from mytable

示例....

select 
(Case level
When 'l1' then type1 ('l1' mean check constant string)
when 'l2' then type2(('l2' mean check constant string))
end) AS (Case when 'l1' then [type01] Else [type02])
from mytable
select level,type1,type2 from mytable

我使用两个程序这个mytable
一个程序只想显示菜单只有type1 一个程序只想显示菜单只有type2 我使用两个程序使用一个视图..

2 个答案:

答案 0 :(得分:1)

您想要动态命名列每行吗?不幸的是,这不可能做到。 但是,如果您只有一行,则可以使用动态SQL EXEC (@sqlstring)

但是,您的客户如何知道期望的列名?

在动态SQL之外或多行中,您可以将名称作为另一列传递出来......

select
    Case level
      When 'l1' then type1
      when 'l2' then type2
   end AS columnvalue,
    Case level
      When 'l1' then type1
      when 'l2' then type2
   end AS outputcolumnname,
from
   mytable

答案 1 :(得分:1)

每行切换一列的名称是没有意义的。行本身没有自己的列名,包含数据集。

另一方面,如果您需要根据输入的数据更改列的名称,那么只需在两个名称下选择两次数据将是最简单的。 EG:

SELECT  col1 AS alias1,
        col1 AS alias2
FROM    myTable