SQL Server : expand rows and transpose columns

标签 sql sql-server

为了描绘这幅画,这是我当前的表格:

Name    Size1    Size2    Size3    Size4
-----------------------------------------
Test    100      200      0        10
Test 2  50       0        100      50
Test 3  70       100      60       40

这是一张过时的 table ,切片和切 block 非常困难。我想做的是转置尺寸列并根据尺寸的数量扩展行。

例如:

Name    Size    Values
----------------------
Test    1       100
Test    2       200
Test    4        10
Test 2  1        50
Test 2  3       100
Test 2  4        50
Test 3  1        70
Test 3  2       100
Test 3  3        60
Test 3  4        40

我的问题:这可能吗,还是我在做梦?

把我的头抓到秃顶......希望得到任何见解!

干杯

最佳答案

使用cross apply (values ())来逆透视您的数据:

select t.Name, v.Size, v.Value
from t
  cross apply (values 
    (1,Size1),(2,Size2),(3,Size3),(4,Size4)
    ) v (Size, Value)
where v.Value<>0

rextester 演示:http://rextester.com/PPLRR33530

返回:

+--------+------+-------+
|  Name  | Size | Value |
+--------+------+-------+
| Test   |    1 |   100 |
| Test   |    2 |   200 |
| Test   |    4 |    10 |
| Test 2 |    1 |    50 |
| Test 2 |    3 |   100 |
| Test 2 |    4 |    50 |
| Test 3 |    1 |    70 |
| Test 3 |    2 |   100 |
| Test 3 |    3 |    60 |
| Test 3 |    4 |    40 |
+--------+------+-------+

关于SQL Server : expand rows and transpose columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310947/

相关文章:

mysql - 将 sql 查询转换为子查询

c# - 餐厅系统数据库/文本文件

sql - 外键约束

SQL Server 类型转换行为

mysql - 查询有什么问题吗?错误语法错误?按无工作分组

mysql - 在两个表中删除会出错

mysql - 从 "data"文件夹mysql转储数据

sql - 将 SSIS 添加到现有 SQL Server 实例

sql-server - SSIS包通过部署升级

sql - SQL 中日期格式的问题