更新存储过程并希望能够根据参数输入更改返回列的名称
我理解下面的内容无效,但认为这是解释我想要实现的内容的最佳方法....我希望能够根据输入参数更改select语句中列的名称。 。
(
CASE
WHEN (@DateExpired = 1) THEN sens.date1 AS [Expired]
ELSE sens.date1 AS [Due Date]
END
)
我可以看到我如何在整个表选择级别执行此操作,但是由于与重复代码错误相关的常见原因而不想重复代码。任何想法都赞赏!
答案 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]
)
然后让客户端应用程序处理业务所需的无效日期..