Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在一列中聚合日期_Sql_Sql Server - Fatal编程技术网

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根据我对要求的理解,可能是这样的,但用户表示:我的查询需要在一列中显示所有日期,并用分隔符隔开。其实没什么大不了的。它也可以针对这种情况进行修改,不管怎样,这是一个简洁的答案,有点太复杂了,不过还是不错。