Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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
Sqlite3-将多个结果放入单独的列中_Sql_Sqlite - Fatal编程技术网

Sqlite3-将多个结果放入单独的列中

Sqlite3-将多个结果放入单独的列中,sql,sqlite,Sql,Sqlite,我是SQL新手,需要一些帮助来选择给定值的多个结果到不同的列中 我桌子的一部分看起来像这样- DevID ConnID Other Columns ... D1 Q1 D1 Q1 D1 Q1 D1 Q2 D1 Q2 D1 Q2 D2 Q3 D2 Q3 D2 Q3 D2 Q4 D2 Q4 D2 Q4 ...

我是SQL新手,需要一些帮助来选择给定值的多个结果到不同的列中

我桌子的一部分看起来像这样-

DevID   ConnID   Other Columns ...
 D1       Q1  
 D1       Q1
 D1       Q1
 D1       Q2
 D1       Q2
 D1       Q2
 D2       Q3  
 D2       Q3
 D2       Q3
 D2       Q4
 D2       Q4
 D2       Q4
...       ...
我希望生成的SELECT查询是-

DevID    PrimConnID    SecConnID  OtherColumns ...
 D1         Q1            Q2
 D2         Q3            Q4
...         ...           ...            ...
使用标准SQL是否可以做到这一点?如果不清楚的话,我是一个新手。

试试这个:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.ConnID) 
            FROM #YourTableName c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT DevID, ' + @cols + ' from 
            (
                select DevID
                ,ConnID
                from #YourTableName
           ) x
            pivot 
            (
                 max(ConnID)
                for ConnID in (' + @cols + ')
            ) p '


execute(@query)

ConnID
列可以有多少个不同的值?您可能正在寻找pivot查询,但确切的答案将取决于我的问题的答案。
ConnID
有100多个不同的值。您需要显示一个示例数据集,以演示什么是全面问题。您总是只想要两列,还是结果集中有100列?最多只有2列。每个设备连接到一个或两个ConnID设备-主设备和辅助设备。表中还有其他数据使得示例中的六个D1实例都是唯一的。我编辑了问题示例以使其更清楚。感谢Newton,但是有100多个不同的ConnID值,每个DevID可以有任意两个作为PrimConnID和SecConnID。大约有150个DevID值。那么这应该可以做到:谢谢牛顿。现在试试这个。获取DECLARE的语法错误。我将尝试一下,看看是否可以让它工作——并阅读SQL中的设置和声明变量。从#YourTableName AA LEFT JOIN中选择DISTINCT AA.DevID、AA.ConnID primconid、BB.ConnID SecConnID(从#YourTableName中选择DevID、ConnID)BB ON AA.DevID=BB.DevID和AA.ConnID BB.ConnID其中AA.ConnID