Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 SQL游标和VARCHAR重复_Sql Server_Sum_Cursor_Varchar - Fatal编程技术网

Sql server SQL游标和VARCHAR重复

Sql server SQL游标和VARCHAR重复,sql-server,sum,cursor,varchar,Sql Server,Sum,Cursor,Varchar,我有以下数据: DECLARE @sscc as INT; DECLARE @orders as varchar(255); DECLARE @value as varchar(255); DECLARE @cOrders as CURSOR; SET @value = 'Orders : ' SET @cOrders = CURSOR FOR SELECT SSCC,ORDERS FROM dbo.TIM_StockGeo tsg WITH(NOLOCK) OPEN @cO

我有以下数据:

 DECLARE @sscc as INT;
 DECLARE @orders as varchar(255);
 DECLARE @value as varchar(255);
 DECLARE @cOrders as CURSOR;
 SET @value = 'Orders : '

 SET @cOrders = CURSOR FOR
 SELECT SSCC,ORDERS FROM dbo.TIM_StockGeo tsg WITH(NOLOCK)

 OPEN @cOrders

 FETCH NEXT FROM @cOrders INTO @sscc,@orders

 WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @value = @value + ' ' + @orders;
        PRINT CAST(@SSCC AS VARCHAR(64)) +  ' ' + @value;
        FETCH NEXT FROM @cOrders INTO @sscc,@orders;
    END

CLOSE @cOrders;
DEALLOCATE @cOrders;
我想用这种方式来表达:

10005555    /18/56789/01/1
10005555    /18/56654/01/1
10005555    /18/52090/01/1
10001111    /18/11111/01/1
10001111    /18/12121/01/1
10002222    /18/89283/01/1
有人能帮我吗?:)

我尝试使用游标:

但我不知道如何将变量归结为仅重复的数据

因此,我的输出数据如下所示:

10005555    /18/56789/01/1, /18/56654/01/1, /18/52090/01/1
10001111    /18/11111/01/1, /18/12121/01/1
10002222    /18/89283/01/1

我使用SQL server 2014

代码表明这是针对SQL server的?如果这是正确的,并且我正确地理解了,您想要实现什么,根本不需要光标

可通过
选择

10005555 Orders :  /18/56789/01/1
10005555 Orders :  /18/56789/01/1 /18/56654/01/1
10005555 Orders :  /18/56789/01/1 /18/56654/01/1 /18/52090/01/1
10001111 Orders :  /18/56789/01/1 /18/56654/01/1 /18/52090/01/1 /18/11111/01/1
10001111 Orders :  /18/56789/01/1 /18/56654/01/1 /18/52090/01/1 /18/11111/01/1 /18/12121/01/1
10002222 Orders :  /18/56789/01/1 /18/56654/01/1 /18/52090/01/1 /18/11111/01/1 /18/12121/01/1 /18/89283/01/1
或者,如果您已经在使用SQL Server 2017版或更高版本,则更简单:

SELECT tsg1.sscc,
       STUFF((SELECT ', ' + tsg2.orders
                     FROM dbo.tim_stockgeo tsg2
                     WHERE tsg2.sscc = tsg1.sscc
                     FOR XML PATH('')), 1, 2, '') orders
       FROM dbo.tim_stockgeo tsg1
       GROUP BY tsg1.sscc;

没有代码或数据库标签,任何人都无法提供帮助。您在使用什么?很抱歉,我没有添加代码:)嗨!谢谢你!我使用SQL server 2014,因此第一个查询是针对我的:)
SELECT tsg1.sscc,
       string_agg(tsg1.orders, ', ') orders
       FROM dbo.tim_stockgeo tsg1
       GROUP BY tsg1.sscc;