出于报告目的,我需要提供表格中的数据:
table A (column1, column2, date1, date2, date3,...,dateN)
我的查询需要在一列中以#。
分隔所有日期(YYYY-MM-DD# YYYY-MM-DD#..)
但问题是日期列的数量不固定,因为从产品到产品可以是不同的日期数。
有什么想法吗?
答案 0 :(得分:4)
此语句适用于postgresql,但您可以将||
替换为+
我认为sql-server,只需尝试它应该可以工作,您应该能够弄清楚其余部分。< / p>
||
是postgres中的串联符号,或者您也可以使用可用的连接函数。
SELECT column1 || CASE WHEN column2 IS NOT NULL THEN '#' || column2 ELSE '' END || ... FROM tablehere
希望它有所帮助!
答案 1 :(得分:1)
经过考虑,我想改变我的答案。也许更轻一点
Declare @YourTable table (Column1 int,Column2 int,date1 date,date2 date,date3 date)
Insert Into @YourTable values
(1,25,'2016-01-15','2016-03-22',null),
(2,50,'2016-04-15','2016-07-29','2016-09-30')
Select Column1
,Column2
,Dates=Replace(Replace((
Select x=format(date1,'yyyy-MM-dd# ')
,x=format(date2,'yyyy-MM-dd# ')
,x=format(date3,'yyyy-MM-dd# ')
--x=format(dateNN,'yyyy-MM-dd# ')
For XML Path('')
) ,'<x>',''),'</x>','')
From @YourTable
返回
Column1 Column2 Dates
1 25 2016-01-15# 2016-03-22#
2 50 2016-04-15# 2016-07-29# 2016-09-30#