Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 Server 2014中无支持列(ex:-ID)的Concat单列值_Sql_Sql Server - Fatal编程技术网

SQL Server 2014中无支持列(ex:-ID)的Concat单列值

SQL Server 2014中无支持列(ex:-ID)的Concat单列值,sql,sql-server,Sql,Sql Server,我只有一个专栏 价值 A. B C 无效的 无效的 F R D 无效的 T R 无效的 预期产出: value ABC FRD TR 目的是将列值分组,直到下一个NULL,依此类推 CREATE TABLE DUMMY1(VALUE VARCHAR(50)) INSERT INTO DUMMY1(VALUE) VALUES('A') INSERT INTO DUMMY1(VALUE) VALUES('B') INSERT INTO DUMMY1(VALUE) VALUES('C') INSE

我只有一个专栏

价值 A. B C 无效的 无效的 F R D 无效的 T R 无效的 预期产出:

value
ABC
FRD
TR
目的是将列值分组,直到下一个NULL,依此类推

CREATE TABLE DUMMY1(VALUE VARCHAR(50))

INSERT INTO DUMMY1(VALUE) VALUES('A')
INSERT INTO DUMMY1(VALUE) VALUES('B')
INSERT INTO DUMMY1(VALUE) VALUES('C')
INSERT INTO DUMMY1(VALUE) VALUES(NULL)
INSERT INTO DUMMY1(VALUE) VALUES(NULL)
INSERT INTO DUMMY1(VALUE) VALUES('F')
INSERT INTO DUMMY1(VALUE) VALUES('R')
INSERT INTO DUMMY1(VALUE) VALUES('D')
INSERT INTO DUMMY1(VALUE) VALUES(NULL)
INSERT INTO DUMMY1(VALUE) VALUES('T')
INSERT INTO DUMMY1(VALUE) VALUES('R')
INSERT INTO DUMMY1(VALUE) VALUES(NULL)
您可以在下面尝试:

SELECT value from STRING_SPLIT
(
    (select SUBSTRING( 
                    ( 
                            SELECT ''+ isnull(Value,',')
                                FROM DUMMY1
                                FOR XML PATH('') 
             
                    ), 1 , 9999)), 
',') as SS
where SS.value <> ''    
SQL表表示无序集。你的问题毫无意义,除非我假设行是有序的。这需要一个单独的列用于订购

假设您有这样一个列,我将其称为id。然后,您可以使用累积计数来分配组,然后进行聚合:

SELECT STRING_AGG(value, '') WITHIN GROUP (ORDER BY id)
FROM (SELECT d.*,
             SUM(CASE WHEN VALUE IS NULL THEN 1 ELSE 0 END) OVER (ORDER BY id) as grp
      FROM DUMMY1 d
     ) d
WHERE value IS NOT NULL
GROUP BY grp;

是一个dbfiddle。

请向我们展示您的尝试。关系数据库中的表表示无序集。除非你有一个定义排序顺序的列,否则没有“直到下一个”这样的东西。也许对这个问题的用例做一点解释也会有所帮助,根据你所问的,我认为像Excel这样的工具可能更适合它,而且很容易实现。