Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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_Pivot_Powerbi - Fatal编程技术网

Sql 将表从序列标识符转换为带属性的实数

Sql 将表从序列标识符转换为带属性的实数,sql,sql-server,pivot,powerbi,Sql,Sql Server,Pivot,Powerbi,我改变了一个话题,但背景不同,但基本上是同一个话题 想象一下,我们在一条永无止境的隧道里,形状像一个圆圈。我们将圆圈的每一部分从1到10分开,我们将每个部分称为slot sl。有两组生物在隧道中行走。每组有2个波段,每个波段都有一个名称和全局生命值。尽管乐队可能会改变顺序,但每个乐队都在向前走。如果一组人在第10格并向前移动,他将在第1格。我们每天抓拍他们的信息。收集的所有数据都存储在具有以下结构的表中: +----------+----------------+----------------

我改变了一个话题,但背景不同,但基本上是同一个话题

想象一下,我们在一条永无止境的隧道里,形状像一个圆圈。我们将圆圈的每一部分从1到10分开,我们将每个部分称为slot sl。有两组生物在隧道中行走。每组有2个波段,每个波段都有一个名称和全局生命值。尽管乐队可能会改变顺序,但每个乐队都在向前走。如果一组人在第10格并向前移动,他将在第1格。我们每天抓拍他们的信息。收集的所有数据都存储在具有以下结构的表中:

+----------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+--------------+--+
| day_id | | gr_1_sl_1_id | | gr_1_sl_1_name | | gr_1_sl_1_hp | | gr_1_sl_2_id | | gr_1_sl_2_name | | gr_1_sl_2_hp | | gr_2_sl_1_id | | gr_2_sl_1_name | | gr_2_sl_1_hp | | gr_2_sl_2_id | | gr_2_sl_2_name | | gr_2_sl_2_hp |  |
+----------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+--------------+--+
|        1 |              3 | orc              |            100 |              4 | goblin           |             10 |             10 | human            |             50 |              1 | dwarf            |           25 |  |
|        2 |              6 | goblin           |              7 |              7 | orc              |             76 |              2 | human            |             60 |              3 | dwarf            |           28 |  |
+----------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+----------------+----------------+------------------+--------------+--+
如您所见,列是按顺序构造的,而数据显示实际值。我想要的是以这种方式塑造信息:

+---------+-------+-------+-----------+---------+
| id_game | gr_id | sl_id | band_name | band_hp |
+---------+-------+-------+-----------+---------+
|       1 |     1 |     3 | orc       |     100 |
|       1 |     1 |     4 | goblin    |      10 |
|       1 |     2 |    10 | human     |      50 |
|       1 |     2 |     1 | dwarf     |      25 |
|       2 |     1 |     6 | goblin    |       7 |
|       2 |     1 |     7 | orc       |      76 |
|       2 |     2 |     2 | human     |      60 |
|       2 |     2 |     3 | dwarf     |      28 |
+---------+-------+-------+-----------+---------+
我在power bi中有这些信息,但如果需要,我可以在sql server中创建视图。我尝试过很多方法,最接近的方法是取消激发并解析原始列,以获得day_id、gr_id、sl_id、属性和值。在属性和值中,基本上是name和hp及其对应的值。我将hp更改为string,但随后我有了库存,我不确定下一步该做什么


有人有什么想法吗?记住,我把问题简单化了;有更多的组、更多的槽、更多的带和更多的统计数据,即攻击和防御等级等。

您似乎想取消该表。在SQL Server中,我建议使用apply:


在其他数据库中,您可以对union all执行类似的操作。

使用您正在使用的数据库标记您的问题。它确实有效。我第二次听到交叉应用和它的神奇效果。谢谢
select t.day_id, v.*
form t cross apply
     (values (1, 1, gr_1_sl_1_id, gr_1_sl_1_name, gr_1_sl_1_hp),
             (1, 2, gr_1_sl_2_id, gr_1_sl_2_name, gr_1_sl_2_hp),
             (2, 1, gr_2_sl_1_id, gr_1_sl_1_name, gr_2_sl_1_hp),
             (2, 2, gr_2_sl_2_id, gr_1_sl_2_name, gr_2_sl_2_hp)
     ) v(id_game, gr_id, sl_id, band_name, band_hp);