我希望根据用户对参数的选择在查询中动态命名列。
我的想法是,根据用户的选择,该列将通过列/字段规范后的“As”来命名。
这是我的示例:
Select Distinct
Case @DateParam
When 'Created' Then Convert(Varchar, h.wmhd_cre_date, 101)
When 'Action' Then Convert(Varchar, d.wmdt_date, 101)
End As CONCATENATE(@DateParm + 'Date'),
因此,如果用户选择“创建”日期的参数,则列标题将显示“CreatedDate”。但是,如果他们为“操作”日期选择了参数,则该列将被命名为“ActionDate”。
之前我曾尝试做类似的事情,并且开始意识到您不能在“As”语句之后放置表达式。这是真的吗?还是有人有什么想法?
最佳答案
那是正确的。别名标识符可能无法通过表达式生成。
您可以执行以下操作:
SELECT DISTINCT
CASE WHEN @DateParam = 'Created' THEN CONVERT(varchar, h.wmhd_cre_date, 101) END AS CreatedDate,
CASE WHEN @DateParam = 'Action' THEN CONVERT(varchar, h.wmdt_date, 101) END AS ActionDate
如果绝对必须以您描述的原始方式返回列,则需要使用动态sql(例如
EXEC
或EXEC sp_executesql
)关于sql - 我可以使用函数/表达式通过T-SQL中的“As”语句来命名列吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4294614/