Sql 在一列中聚合日期
出于报告目的,我需要提供表中的数据:Sql 在一列中聚合日期,sql,sql-server,Sql,Sql Server,出于报告目的,我需要提供表中的数据: table A (column1, column2, date1, date2, date3,...,dateN) 我的查询需要在一列中显示所有日期,并用分隔符分隔 (YYYY-MM-DD# YYYY-MM-DD#..) 但问题是日期列的数量并不是固定的,因为不同产品的日期数量可能不同 有什么想法吗?经过考虑,我想改变我的答案。也许再轻一点 Declare @YourTable table (Column1 int,Column2 int,date1 d
table A (column1, column2, date1, date2, date3,...,dateN)
我的查询需要在一列中显示所有日期,并用分隔符分隔
(YYYY-MM-DD# YYYY-MM-DD#..)
但问题是日期列的数量并不是固定的,因为不同产品的日期数量可能不同
有什么想法吗?经过考虑,我想改变我的答案。也许再轻一点
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
经过考虑,我想改变我的答案。也许再轻一点
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
此语句适用于postgresql,但您可以将| |替换为sql server的+,我认为,只要尝试一下,它就会起作用,您应该能够解决其余问题 ||是postgres中的连接符号,也可以使用可用的连接函数 选择column1 | | CASE当column2不为空时,则选择| | column2 ELSE END |。。。从这里开始
希望有帮助 此语句适用于postgresql,但您可以将| |替换为适用于sql server的+我认为,只要尝试一下,它就会起作用,您应该能够解决其余问题 ||是postgres中的连接符号,也可以使用可用的连接函数 选择column1 | | CASE当column2不为空时,则选择| | column2 ELSE END |。。。从这里开始
希望有帮助 向我们展示样本数据和预期结果。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。您需要显示生成日期1、日期2、…、日期的来源。我们可能必须更改该问题您的意思是产品具有不同的日期数?tableA是一个动态视图?一旦创建了一个表,表中的日期列数是固定的,或者,表中的每一行都是相同的。您可能想说不是所有的日期列都填充在每一行中吗?无论如何,只需在动态查询中连接所有列即可。显示示例数据和预期结果。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。您需要显示生成日期1、日期2、…、日期的来源。我们可能必须更改该问题您的意思是产品具有不同的日期数?tableA是一个动态视图?一旦创建了一个表,表中的日期列数是固定的,或者,表中的每一行都是相同的。您可能想说不是所有的日期列都填充在每一行中吗?无论如何,只需在动态查询中连接所有列。输出仍然是错误的,您的末尾仍然有一个不应该出现的。@RaulCuth根据我对要求的理解,可能是这样的,但用户表示:我的查询需要在一列中显示所有日期,并用分隔符分隔。其实没什么大不了的。在这种情况下,它也可以修改。无论如何,这是一个简洁的答案,有点太复杂了,但是很好。输出仍然是错误的,你最后还有一个不应该出现的日期。@RaulCuth根据我对要求的理解,可能是这样的,但用户表示:我的查询需要在一列中显示所有日期,并用分隔符隔开。其实没什么大不了的。它也可以针对这种情况进行修改,不管怎样,这是一个简洁的答案,有点太复杂了,不过还是不错。