我正在尝试从SQLite表中提取数据,该表将键值对存储在双列中。例如,用钥匙foo
,bar
,man
,和row
,该表将如下所示:
| _id | external_id | 关键 值|
| ----- | ------------- || ---- | ------- |
| 1 | 12345 | foo | 牛|
| 2 | 12345 | 酒吧 哞|
| 3 | 12345 | 男人 孔
| 4 | 12345 | 排| 船|
| 5 | 67980 | foo | abc |
| 6 | 67890 | 酒吧 def |
| 7 | 67890 | 男人 ghi |
| 8 | 67890 | 排| jkl |
我想执行一个查询,external_id
以行作为键,值作为行,每行都给我。像这样:
| external_id | foo | 酒吧 男人 排|
| ------------- | ----- | -------- || ------ | ------ |
| 12345 | 牛| | 孔 船|
| 67890 | abc | def | ghi | jkl |
我唯一能想到的解决方案是每个键的联接:
SELECT a.external_id, b.foo, c.bar, d.main, e.row
FROM myTable AS a
LEFT JOIN
(SELECT external_id, key AS foo
FROM myTable
WHERE key="foo") AS b
ON a.external_id = b.external_id
...
LEFT JOIN
(SELECT external_id, key AS row
FROM myTable
WHERE key="row") AS e
ON a.external_id = e.external_id
GROUP BY a.external_id
有一个更好的方法吗?
另一个可用的选项是使用 条件聚合 :
SELECT external_id,
MAX(CASE WHEN key = 'foo' THEN value END) AS foo,
MAX(CASE WHEN key = 'bar' THEN value END) AS bar,
MAX(CASE WHEN key = 'man' THEN value END) AS man,
... etc
FROM mytable
GROUP BY external_id
我肯定这是一个愚蠢的问题,但我找不到一个简单的方法将一个列表按另一个列表分组。我在网上搜索了很多,但我只找到了带有类属性或排序元素的示例。 我有一个带有键的字符串列表,例如: 和一个我想按键列表分组的int列表,例如: 因此结果应该是一个包含子列表的列表,如下所示: 或者也可以得到指数。提前道谢。
我得到了以下数组: 我想将其转换为以下内容: 做这件事最好的方法是什么? 到目前为止我已经试过了,所以得到了钥匙,但是它们的值是错误的:
我一直在努力想办法创建一个HashMap,将具有相同键的值(放入列表)分组。这就是我的意思: 假设我有以下键和值: 我想把这些值放到一个 这样它就会将值分组到具有相同键的列表整数中,类似于这样: (1, {10, 11, 12}),(2, {20}), (3, {30,31}) 现在,密钥和值存储在 我不知道如何通过这个Hashmap循环创建新的Hashmap,关键是:值对列表。有人对这个话题有好
问题内容: 我有两个表,关键字和数据。 表关键字具有2列(id,关键字),表数据具有3列(id [keywords.id的外键,名称,值]。 我正在使用此查询: 它返回类似: 每个id的值可以为0到3(将来可能会更多)。 如何在同一行中检索具有相同ID的所有行? 喜欢 我想这样做是因为我希望能够对值进行排序。 问题答案: 像这样使用: 另外,您可能需要根据需要获取确切的值顺序。像这样:
问题内容: 我有一个SQL查询返回1行,其中包含多个列标题: 有没有一种方法可以将该行转换为2列,即: 这是在SQLServer 2008 r2上运行 编辑:添加一个更好的例子 来自一个简单的 类型查询。我要显示的是: 问题答案: 试试这个
问题内容: 我的问题是我有一个这样的表: c1 | c2 | c3 | c4是一个由|分隔的值。 我的最终结果应如下所示: 我该怎么做呢? 谢谢 问题答案: 这就是您可以执行的操作,使用管道将字符串拆分并使用spark函数爆炸数据 输出: 希望这可以帮助!