首页 > 解决方案 > SQL Server 的并排行

问题描述

我需要从表中获取数据,(img 1),并放在同一行(img 2)

我怎样才能做到这一点?

它需要在 SQL Server 上

我已经尝试在 select 中选择,但我认为我不知道正确的方法,或者如果不使用这个。

    select * from tblTest
    where exists(select * from tblTest)

我有的

https://i.stack.imgur.com/aDgbc.png

我需要的

https://i.stack.imgur.com/ubVJA.png

标签: sql-server

解决方案


这有点猜测 OP 的最后一条评论:“我想说的是,对于 3 行,我需要 1 行与这一切。” . 我怀疑他们因此想要这个:

WITH CTE AS(
    SELECT {YourColumns},
           ROW_NUMBER() OVER (ORDER BY ID) - 1 AS RN
    FROM {YourTable})
SELECT {YourColumns}
FROM CTE C1
     LEFT JOIN CTE C2 ON C1.RN + 1 = C2.RN
     LEFT JOIN CTE C3 ON C2.RN + 1 = C3.RN
WHERE C1.RN % 3 = 0;

您需要将大括号 ( {}) 中的部分替换为相应的对象名称。另外,请注意,这很可能在除小数据集之外的任何东西上表现得非常糟糕。查询远非 SARGable。

编辑:关于您在帖子中的查询,恐怕没有任何意义。

select * from tblTest
where exists(select * from tblTest)

这实际上是在说明“tblTest如果表中有行,则返回表中的所有行和列tblTestEXISTS因此完全没有意义,就好像没有行一样,tblTest那么SELECT无论如何都不会返回任何行。检查行的存在没有任何意义但在桌子上进一步扫描。

您似乎对 SQL 很陌生,因此最好先在线查找一些教程和指南,以便掌握基础知识。


推荐阅读