需要您的专家帮助,将多个不同列的连接值的sql查询构建为一个列值。
在我的情况下,我有Table1,其中包含列
acid1, acid2, acid3, acid4, acid5
类型VARCHAR
以及列clr_bal_amt1, clr_bal_amt2, clr_bal_amt3, clr_bal_amt4, clr_bal_amt5
NUMBER
的{{1}}和columns deposit_duedate1, deposit_duedate2, deposit_duedate3, deposit_duedate4, deposit_duedate5
类型的。
现在我尝试在单列值中实现输出
DATE
答案 0 :(得分:0)
根据我的理解,您希望选择由|
和单列分隔的所有列。您需要将所有非VARCHAR
值转换为VARCHAR
,然后使用+
运算符将它们连接到单列中。对于转换,您可以使用cast
。 More about cast here.。并且您可能还想使用COALESCE
,因为如果任何列值为null,则它将返回null。More info on coalesce。
SELECT COALESCE(table1.ACID1,'defaultvalue') + '|'
+ CAST(COALESCE(table1.CLR_BAL_AMT1,0) AS VARCHAR)
+'|'+CAST(table1.DEPOSIT_DUEDATE1 AS VARCHAR)
+'|'+ table1.ACID2+'|'+CAT(table1.CLR_BAL_AMT2 AS VARCHAR)
+'|'+CAST(table1.DEPOSIT_DUEDATE2 AS VARCHAR)
+'|'+table1.ACID3+'|'+CAST(table1.CLR_BAL_AMT3 AS VARCHAR)
+'|'+CAST(table1.DEPOSIT_DUEDATE3 AS VARCHAR)
+'|'+table1.ACID4+'|'+CAST(table1.CLR_BAL_AMT4)
+'|'+CAST(table1.DEPOSIT_DUEDATE4 AS VARCHAR)
+'|'+ table1.ACID5+'|'+CAST(table1.CLR_BAL_AMT5 AS VARCHAR)
+'|'+CAST(table1.DEPOSIT_DUEDATE5 AS VARCHAR) AS FinalSampleVal
FROM
yourtable As table1
答案 1 :(得分:0)
尝试如下投射:
select table1.ACID1|cast(table1.CLR_BAL_AMT1 AS VARCHAR(MAX))|table1.DEPOSIT_DUEDATE1
table1.ACID2|cast(table1.CLR_BAL_AMT2 AS VARCHAR(MAX))|table1.DEPOSIT_DUEDATE2
table1.ACID3|cast(table1.CLR_BAL_AMT3 AS VARCHAR(MAX))|table1.DEPOSIT_DUEDATE3
table1.ACID4|cast(table1.CLR_BAL_AMT4 AS VARCHAR(MAX))|table1.DEPOSIT_DUEDATE4
table1.ACID5|cast(table1.CLR_BAL_AMT5 AS VARCHAR(MAX))|table1.DEPOSIT_DUEDATE5" as FinalSampleVal