如何在SQL选择语句中创建列并设置默认值

5

我想为已派生的列“Sub1”设置默认文本值。这可能吗?我已经创建了占位符,使用值0来进行推导列。如果有关系到此问题,我正在使用Teradata……谢谢!

select c_clm
,dt.Claimant_Name
,dt.i_ssn
,0 as "Time_Period"
,0 as "Unit_ID",
/*,idv.C_PDT AS "Product"
,er.C_FRM_POL AS "Group Product",*/
(case
 when idv.c_pdt is null then 'GLTC' 
 else idv.c_pdt
 end) as "Product_ID"
,c_ams_clm as "DBS_UserID"
,upc_indiv_org_id as "DBS_EEID"
,0 as "Categ"
,0 as Categ_sort
,0 as "Sub1"
,0 as "Sub1_Sort"
,0 as "Sub2"
,0 as "Sub2_Sort"
,0 as "MTD_Num" 
,0 as "MTD_Denom"
,dt.i_pol as "Policy_Number"
,COALESCE (erpol.n_pol,idv.n_pol, ks.n_pol) 

1
你是如何推导出这一列的?在什么情况下会应用这个“默认值”? - Joe Stefanelli
“默认文本值”是什么意思?您是指列的“标题”,还是想将零转换为某个文本字符串? - BellevueBob
目前代码会创建“Sub1”列并将其中的值设置为“0”,我希望在“Sub1”列的每一行中插入“Text”而不是“0”。 - gfuller40
“默认文本值”?根据什么标准? - Kermit
2个回答

30

您是想尝试这样做吗:

select '0' as Sub1

您可以像赋值数字一样直接赋值文本。

或者,您是否正在尝试在SELECT语句中给一个空列赋值。为此,请使用COALESCE:

select coalesce(Sub1, '0') as Sub1

理想情况下,我希望将“默认值”选择为sub1,以便在sub1的每一行中,我都可以得到“默认值”作为一个字符串。 - gfuller40
1
如果我尝试执行Select "defaultvaluehere" as sub1,我会收到一个错误消息:“未找到defaultvaluehere列”。 - gfuller40

5
如果您想使用字符常量填充列,只需将其放在单引号中并为其命名即可。通常最好指定所需的列类型。例如:
select 'Text String' (VARCHAR(255)) as sub1

请注意,如果您使用双引号,Teradata会认为您是在引用该名称的列(因此您收到了错误消息)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接