将数据 Table 放入 2 列
Putting Data Table into 2 columns
我有一个包含照片的 table。每条记录中一张照片及其描述。我想创建一个临时文件 table,每条记录有两个 photos/descriptions。因此,我需要创建一个在两列中显示照片的报告。
这是我的:
1 Photo1, Description1
2 Photo2, Description2
3 Photo3, Description3
4 Photo4, Description4
这是我所期待的:
Photo1, Description1, Photo2, Description2
Photo3, Description3, Photo4, Description4
如何使用 SQL Server 2012
中的存储过程到达那里?
你没有在这里提供很多细节,但这是一种可能性。第一个 cte 为每一行添加一个行号,这样我们就可以确保我们有一个一致的编号模式。然后我们有一个 cte 来检索奇数,然后是另一个 cte 来获取偶数。然后我们就把他们连在一起。
with NumberedPhotos as
(
select Photo
, Description
, ROW_NUMBER() over(order by PhotoID) as RowNum
from SomeTable
)
, OddNumbers as
(
select Photo
, Description
, RowNum
from NumberedPhotos
where RowNum % 2 = 1
)
, EvenNumbers as
(
select Photo
, Description
, RowNum
from NumberedPhotos
where RowNum % 2 = 0
)
select o.Photo
, o.Description
, e.Photo
, e.Description
from OddNumbers o
left join EvenNumbers e on o.RowNum = e.RowNum - 1
您可以像@Sean Lange 提到的那样使用 Modulo
,但您会想像这样重新加入您的 table:
;WITH NumberedPhotos
AS (
SELECT photo_name
,photo_desc
,ROW_NUMBER() OVER (
ORDER BY Photo_ID
) AS RowNum
FROM photo_info
)
SELECT
t.photo_name
,t.photo_desc
,n.photo_name
,n.photo_desc
FROM NumberedPhotos n
LEFT JOIN NumberedPhotos AS t ON n.rownum = t.rownum + 1
WHERE n.rownum % 2 = 0;
我有一个包含照片的 table。每条记录中一张照片及其描述。我想创建一个临时文件 table,每条记录有两个 photos/descriptions。因此,我需要创建一个在两列中显示照片的报告。
这是我的:
1 Photo1, Description1
2 Photo2, Description2
3 Photo3, Description3
4 Photo4, Description4
这是我所期待的:
Photo1, Description1, Photo2, Description2
Photo3, Description3, Photo4, Description4
如何使用 SQL Server 2012
中的存储过程到达那里?
你没有在这里提供很多细节,但这是一种可能性。第一个 cte 为每一行添加一个行号,这样我们就可以确保我们有一个一致的编号模式。然后我们有一个 cte 来检索奇数,然后是另一个 cte 来获取偶数。然后我们就把他们连在一起。
with NumberedPhotos as
(
select Photo
, Description
, ROW_NUMBER() over(order by PhotoID) as RowNum
from SomeTable
)
, OddNumbers as
(
select Photo
, Description
, RowNum
from NumberedPhotos
where RowNum % 2 = 1
)
, EvenNumbers as
(
select Photo
, Description
, RowNum
from NumberedPhotos
where RowNum % 2 = 0
)
select o.Photo
, o.Description
, e.Photo
, e.Description
from OddNumbers o
left join EvenNumbers e on o.RowNum = e.RowNum - 1
您可以像@Sean Lange 提到的那样使用 Modulo
,但您会想像这样重新加入您的 table:
;WITH NumberedPhotos
AS (
SELECT photo_name
,photo_desc
,ROW_NUMBER() OVER (
ORDER BY Photo_ID
) AS RowNum
FROM photo_info
)
SELECT
t.photo_name
,t.photo_desc
,n.photo_name
,n.photo_desc
FROM NumberedPhotos n
LEFT JOIN NumberedPhotos AS t ON n.rownum = t.rownum + 1
WHERE n.rownum % 2 = 0;