Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 如何将表行转换为特定的格式组_Sql_Sql Server - Fatal编程技术网

Sql 如何将表行转换为特定的格式组

Sql 如何将表行转换为特定的格式组,sql,sql-server,Sql,Sql Server,我有一个表,我想输出两种格式的记录 在第一个输出中,我希望表行显示为左组和右组,您可以在图像中看到。 在第二个输出中,我希望行为一左一右 我正在使用SQL Server 我尝试过pivot,但没有成功。如果必须在T-SQL中执行类似操作,这是一种方法 ---------------------------- -- Display 1 ---------------------------- DECLARE @ColBreak INT = 5 ;WITH MyTable (SrNo, ItemN

我有一个表,我想输出两种格式的记录

在第一个输出中,我希望表行显示为左组和右组,您可以在图像中看到。 在第二个输出中,我希望行为一左一右

我正在使用SQL Server


我尝试过pivot,但没有成功。

如果必须在T-SQL中执行类似操作,这是一种方法

----------------------------
--  Display 1
----------------------------
DECLARE @ColBreak INT = 5
;WITH MyTable (SrNo, ItemNo, Qty) AS
(
    SELECT 1, 'A1', 150 UNION ALL
    SELECT 2, 'A2', 100 UNION ALL
    SELECT 3, 'A3', 300 UNION ALL
    SELECT 4, 'A4', 150 UNION ALL
    SELECT 5, 'A5', 100 UNION ALL
    SELECT 6, 'A6', 300 UNION ALL
    SELECT 7, 'A7', 150 UNION ALL
    SELECT 8, 'A8', 100 UNION ALL
    SELECT 9, 'A9', 300 UNION ALL
    SELECT 10, 'A10', 150
)
,Column1 AS
(
    SELECT *
    FROM MyTable T1
    WHERE SrNo  <= @ColBreak
)
,Column2 AS
(
    SELECT *
    FROM MyTable T1
    WHERE SrNo  > @ColBreak
)
SELECT *
FROM Column1 T1
JOIN Column2 T2 ON T1.SrNo + @ColBreak = T2.SrNo

----------------------------
--  Display 2
----------------------------

;WITH MyTable (SrNo, ItemNo, Qty) AS
(
    SELECT 1, 'A1', 150 UNION ALL
    SELECT 2, 'A2', 100 UNION ALL
    SELECT 3, 'A3', 300 UNION ALL
    SELECT 4, 'A4', 150 UNION ALL
    SELECT 5, 'A5', 100 UNION ALL
    SELECT 6, 'A6', 300 UNION ALL
    SELECT 7, 'A7', 150 UNION ALL
    SELECT 8, 'A8', 100 UNION ALL
    SELECT 9, 'A9', 300 UNION ALL
    SELECT 10, 'A10', 150
)
SELECT *
FROM MyTable T1
JOIN MyTable T2 ON T1.SrNo + 1 = T2.SrNo
WHERE T1.SrNo % 2 != 0

这不是您在T-SQL中应该做的事情。这应该由您的报告层来处理。要执行此操作,T-SQL需要非自然连接,并且结果无法在SSMS中分页。要获得有关实现输出1的帮助,您可以查看一下。@MarkD paging现在不是imp-我想要的wt是5-5条记录,左-右。。。