TSQL根据参数更改sql select语句中的列名

时间:2014-06-10 09:26:29

标签: sql sql-server tsql stored-procedures

更新存储过程并希望能够根据参数输入更改返回列的名称

我理解下面的内容无效,但认为这是解释我想要实现的内容的最佳方法....我希望能够根据输入参数更改select语句中列的名称。 。

(
 CASE
 WHEN (@DateExpired = 1) THEN sens.date1 AS [Expired]
 ELSE sens.date1 AS [Due Date]
 END
)

我可以看到我如何在整个表选择级别执行此操作,但是由于与重复代码错误相关的常见原因而不想重复代码。任何想法都赞赏!

2 个答案:

答案 0 :(得分:1)

只需在存储过程中使用IF语句......

IF @DateExpired = 1
    SELECT sens.date1 AS Expired FROM sens
ELSE
    SELECT sens.date1 AS [Due Date] FROM sens

如果您担心重复的SQL(可能是因为您的查询很复杂),那么您可以让您的SQL语句将所需数据插入临时表中,然后使用上面的IF替换" sens"使用临时表,只返回临时表中的列名。

希望有所帮助,

答案 1 :(得分:0)

一种方法是在选择列表中添加两个列,并添加一个虚拟日期,当该列不满足条件时,该日期不适用于应用程序,如:

(
 CASE WHEN (@DateExpired = 1) THEN sens.date1  ELSE '01-01-1900' END AS [Expired]
 CASE WHEN (@DateExpired <> 1) THEN sens.date1  ELSE '01-01-1900' END AS [Due Date]
)

然后让客户端应用程序处理业务所需的无效日期..