Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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 2008 如何在SQL中连接两行并根据列进行排序_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何在SQL中连接两行并根据列进行排序

Sql server 2008 如何在SQL中连接两行并根据列进行排序,sql-server-2008,Sql Server 2008,我有一张像上面这样的桌子。我想写一个查询,这样我就有了一个如下表: comp vol Volume ID Seg name CSQ 9000 15000 ANSD-09-MN-02 EWW a CSY 11000 15000 ANSD-09-MN-02 EWW a CCB 0.020679 15 ANSD-09-W1-02 CID W CID 0.868951 15

我有一张像上面这样的桌子。我想写一个查询,这样我就有了一个如下表:

comp   vol      Volume     ID       Seg    name
CSQ   9000      15000    ANSD-09-MN-02  EWW    a
CSY   11000     15000    ANSD-09-MN-02  EWW    a
CCB  0.020679   15       ANSD-09-W1-02  CID    W
CID  0.868951   15       ANSD-09-W1-02  CID    W
CSQ  9.919137   15       ANSD-09-W1-02  CID    W
CSY  4.139181   15       ANSD-09-W1-02  CID    W
我没有一个名为
crucomp
的列,crucomp中的数据是特定ID的卷和组成的串联

我尝试了不同的方法来达到预期的结果,但我无法达到预期的结果

我需要帮助。 谢谢

MS SQL Server 2014架构设置

Volume   BatchID         Seg   Name          Crucomp
15000   ANSD-09-MN-02    EWW    a         (CSQ-9000)(CSY-11000)
15000   ANSD-09-W1-02    CID    W    (CCB-0.020679)(CID-0.868951)(CSQ-9.919137  )(CSY-4.139181).
DECLARE @TABLE TABLE(comp VARCHAR(20), vol VARCHAR(10), Volume INT, 
                     ID VARCHAR(20), Seg VARCHAR(10),name VARCHAR(10))
INSERT INTO @TABLE VALUES
('CSQ' ,  '9000'   ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CSY' ,  '11000'  ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CCB' , '0.020679',   15    ,'ANSD-09-W1-02','CID','W'),
('CID' , '0.868951',   15    ,'ANSD-09-W1-02','CID','W'),
('CSQ' , '9.919137',   15    ,'ANSD-09-W1-02','CID','W'),
('CSY' , '4.139181',   15    ,'ANSD-09-W1-02','CID','W')

SELECT t.Volume
      ,t.ID AS BatchID
      ,t.Seg
      ,t.name
      ,STUFF((SELECT '(' + comp + '-'+ Vol + ')'
              FROM @TABLE  
              WHERE Volume = t.Volume AND Seg = t.Seg
               AND ID = t.ID AND name = t.name 
              FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,0,'') AS Crucomp
FROM @TABLE t
GROUP BY t.Volume
      ,t.ID 
      ,t.Seg
      ,t.name
ORDER BY t.Volume DESC
查询1

Volume   BatchID         Seg   Name          Crucomp
15000   ANSD-09-MN-02    EWW    a         (CSQ-9000)(CSY-11000)
15000   ANSD-09-W1-02    CID    W    (CCB-0.020679)(CID-0.868951)(CSQ-9.919137  )(CSY-4.139181).
DECLARE @TABLE TABLE(comp VARCHAR(20), vol VARCHAR(10), Volume INT, 
                     ID VARCHAR(20), Seg VARCHAR(10),name VARCHAR(10))
INSERT INTO @TABLE VALUES
('CSQ' ,  '9000'   ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CSY' ,  '11000'  ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CCB' , '0.020679',   15    ,'ANSD-09-W1-02','CID','W'),
('CID' , '0.868951',   15    ,'ANSD-09-W1-02','CID','W'),
('CSQ' , '9.919137',   15    ,'ANSD-09-W1-02','CID','W'),
('CSY' , '4.139181',   15    ,'ANSD-09-W1-02','CID','W')

SELECT t.Volume
      ,t.ID AS BatchID
      ,t.Seg
      ,t.name
      ,STUFF((SELECT '(' + comp + '-'+ Vol + ')'
              FROM @TABLE  
              WHERE Volume = t.Volume AND Seg = t.Seg
               AND ID = t.ID AND name = t.name 
              FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,0,'') AS Crucomp
FROM @TABLE t
GROUP BY t.Volume
      ,t.ID 
      ,t.Seg
      ,t.name
ORDER BY t.Volume DESC

Volume   BatchID         Seg   Name          Crucomp
15000   ANSD-09-MN-02    EWW    a         (CSQ-9000)(CSY-11000)
15000   ANSD-09-W1-02    CID    W    (CCB-0.020679)(CID-0.868951)(CSQ-9.919137  )(CSY-4.139181).
DECLARE @TABLE TABLE(comp VARCHAR(20), vol VARCHAR(10), Volume INT, 
                     ID VARCHAR(20), Seg VARCHAR(10),name VARCHAR(10))
INSERT INTO @TABLE VALUES
('CSQ' ,  '9000'   ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CSY' ,  '11000'  ,   15000 ,'ANSD-09-MN-02','EWW','a'),
('CCB' , '0.020679',   15    ,'ANSD-09-W1-02','CID','W'),
('CID' , '0.868951',   15    ,'ANSD-09-W1-02','CID','W'),
('CSQ' , '9.919137',   15    ,'ANSD-09-W1-02','CID','W'),
('CSY' , '4.139181',   15    ,'ANSD-09-W1-02','CID','W')

SELECT t.Volume
      ,t.ID AS BatchID
      ,t.Seg
      ,t.name
      ,STUFF((SELECT '(' + comp + '-'+ Vol + ')'
              FROM @TABLE  
              WHERE Volume = t.Volume AND Seg = t.Seg
               AND ID = t.ID AND name = t.name 
              FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,0,'') AS Crucomp
FROM @TABLE t
GROUP BY t.Volume
      ,t.ID 
      ,t.Seg
      ,t.name
ORDER BY t.Volume DESC

你能描述一下你尝试了什么以及它是如何不起作用的吗?我使用了这个select@crucomp=coalesce(@crucomp,“)+”(“+composition+”-“+convert(varchar,volume)+”)“从PAS_BATCH_SEG_COMP_VOLUMES print@crucomp……它提供了所有合成和体积的串联。我想知道如何为单独的ID断开该结果”“hanks..工作正常。