假设您有一个名为scoreTotals的三列表。它有三个球员的每周积分总数。
如果您在scoreTotals上运行此查询:
select *
from scoreTotals;
你会得到这个:
Jones Smith Mills
50 70 60
如何将输出重新配置给最终用户,这样就是这样:
player points
Jones 50
Smith 70
Mills 60
诀窍是让列标题显示在左侧作为实际数据字段,而不是列的标题。
我在StackOverflow上看到了有关如何将列转换为行的一些内容,但没有一个解决了这个问题,我尝试根据我的情况调整其他想法并不起作用。
它需要在sqlite中工作,这意味着pivot和unpivot关键字不起作用。我希望这样做,而不是将表存储到数据库,然后删除它。
以下代码将生成我正在尝试操作的表:
create table scoreTotals(Jones int, Smith int, Mills int);
insert into scoreTotals values (50, 70, 60);
答案 0 :(得分:0)
我遇到了类似的问题,我的解决方案取决于您可能使用哪种编程语言来处理sqlite命令。在我的情况下,我使用python连接到sqlite。在我选择返回记录之后,我将结果集存储到“列表列表”(又名表)中,然后我可以使用python中的以下单行代码转置(也称为unpivot):
result = [[row[idx] for row in table] for idx in xrange(len(table[0]))] # transpose logic using list comprehension
SQLite没有unpivot命令,但是bluefeet为MySQL提供的这个解决方案也适用于SQLite: