Sql 将一行拆分为多行

Sql 将一行拆分为多行,sql,database,tsql,database-design,relational-database,Sql,Database,Tsql,Database Design,Relational Database,资料 输出应如下所示: 1; from 0; to 1; 5% ; boulder; 10% ; sand; 20%; silt 可以使用unpivot执行此操作。但是,如果数据不太大,最简单的方法就是使用union all: 请注意,有三列称为“百分比”。这在SQL表中是不允许的,所以我假设它们有不同的名称 如果您的表确实较大,则使用交叉联接或unpivot的另一种方法通常会有更好的性能。非常感谢您的帮助。然而,我试图添加一个where子句来过滤结果,但它不起作用。我该怎么做??谢谢@用户3

资料

输出应如下所示:

1; from 0; to 1; 5% ; boulder; 10% ; sand; 20%; silt
可以使用unpivot执行此操作。但是,如果数据不太大,最简单的方法就是使用union all:

请注意,有三列称为“百分比”。这在SQL表中是不允许的,所以我假设它们有不同的名称


如果您的表确实较大,则使用交叉联接或unpivot的另一种方法通常会有更好的性能。

非常感谢您的帮助。然而,我试图添加一个where子句来过滤结果,但它不起作用。我该怎么做??谢谢@用户3478071。将where子句添加到所有三个子查询或使用子查询:select*from t where。请为子查询提供一个示例,因为我无法真正使其工作。再次感谢
1; from 0; to 1;  5% ; boulder

1; from 0; to 1; 10%; sand

1; from 0; to 1; 20% silt
select station, "from(m)", "to(m)", "ob.1" as Materials, Percent1 as Percent
from table t
union all
select station, "from(m)", "to(m)", "ob.2" as Materials, Percent2 as Percent
from table t
union all
select station, "from(m)", "to(m)", "ob.3" as Materials, Percent3 as Percent
from table t;