SQL Server AS列的动态别名

camsedfj  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(328)

我正在处理一些存储过程,其中一个特别要求我对select的特定字段使用条件。我的select如下:

acc.AccountNum AS [Voucher_ID],
    pol.Number AS [Policy_Number],
    veh.Vehicle AS [VIN],

我尝试将列别名动态更改为AS,然后根据条件进行修改,我尝试插入一个if,如下所示:

acc.AccountNum AS If(@x = 1){[Voucher_ID]} else {[Voucher_ID2]},

但它不起作用,我也尝试了一个案例,但也不起作用,有没有办法做到这一点,或者我必须创建两个不同的选择?

z9gpfhce

z9gpfhce1#

正如@Larnu在注解中提到的,您不能有动态列文字。您可以同时有别名和基于可空性的拾取。

CASE @x = 1 then acc.AccountNum  ELSE NULL END AS [Voucher_ID],
CASE @x <> 1 OR @x IS NULL  then acc.AccountNum ELSE NULL END AS [Voucher_ID2],
    pol.Number AS [Policy_Number],
    veh.Vehicle AS [VIN],
42fyovps

42fyovps2#

别名必须是一个文本。这意味着我的应用程序中所请求的内容只在一种方式下可行:创建两个不同的select语句,并在select语句前插入所需的条件,如下所示:

IF @x = 1 
SELECT acc.AccountNum AS [Voucher_ID],
pol.Number AS [Policy_Number],
veh.Vehicle AS [VIN] 
FROM program WHERE ...

IF @x = 2
SELECT acc.AccountNum AS [Voucher_ID2],
pol.Number AS [Policy_Number],
veh.Vehicle AS [VIN] 
FROM program WHERE ...

相关问题