0
我有一个材料表。 我需要填写该表格中的数据输入表单。分配多列上的任意行
的问题是,数据输入形式被划分成多个列,每列一个含有多种材料如图片。 如何写一个TSQL SELECT查询获得的材料名称的第一束成一列,第二束入第二塔等。
我有一个材料表。 我需要填写该表格中的数据输入表单。分配多列上的任意行
的问题是,数据输入形式被划分成多个列,每列一个含有多种材料如图片。 如何写一个TSQL SELECT查询获得的材料名称的第一束成一列,第二束入第二塔等。
在客户端而不是在数据库中执行此操作可能是最简单的,但是如果您真的想这样做,我会假设将行分配到3组中的最简单方法是将row_number()与以3为模并使用它建立单独的列。这将略有不同的行排序:
A B C
D E F
G H
如果你需要让他们在另外的顺序,那么你需要用行除以3的数量来划分ROW_NUMBER(),将你让他们在
select
max(case when GRP = 0 then VALUE end),
max(case when GRP = 1 then VALUE end),
max(case when GRP = 2 then VALUE end)
from
(
select
(row_number() over (order by VALUE)-1) % 3 as GRP,
(row_number() over (order by VALUE)-1)/3 as ROW,
VALUE
from table1
)X
group by ROW
实施例SQL Fiddle
01:A D G
B E H
C F
实施例的顺序编辑:示例如何以其他方式划分行:
declare @NOLINES int
select @NOLINES = ceiling(count(*)/3.0) from table1
select
max(case when GRP = 0 then VALUE end),
max(case when GRP = 1 then VALUE end),
max(case when GRP = 2 then VALUE end)
from
(
select
(row_number() over (order by VALUE)-1)/@NOLINES as GRP,
(row_number() over (order by VALUE)-1) % @NOLINES as ROW,
VALUE
from table1
)X
group by ROW
非常感谢。你会举另一个例子来以问题中的其他方式显示行吗? – Ehab
你只需要有行数+交换模数和除法另一种方式。为此添加了示例。 –
工作正常。谢谢! – Ehab