Elixir 如何使用EXTO获取原始sql返回的DB值

Elixir 如何使用EXTO获取原始sql返回的DB值,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我做了一个复杂的SQL。所以我使用原始查询。 我已经提到了https://stackoverflow.com/questions/36042888/raw-sql-with-ecto 但我还是堆积起来了 query = "select item_id, sum(unit) amount from sales where item_id = ? " result = Ecto.Adapters.SQL.query(Repo, query, [item_id]) 然而,我不知道如何检索DB值,就像

我做了一个复杂的SQL。所以我使用原始查询。 我已经提到了
https://stackoverflow.com/questions/36042888/raw-sql-with-ecto
但我还是堆积起来了

query = "select item_id, sum(unit) amount from sales where item_id = ? "
result = Ecto.Adapters.SQL.query(Repo, query, [item_id])
然而,我不知道如何检索DB值,就像通常的Ecto结果一样。 我希望我能得到像Map一样的价值观,不管是什么

结果是打击

%Mariaex.Result{columns: ["item_id", "amount"], connection_id: nil, last_insert_id: nil, num_rows: 1, rows: [[42, #Decimal<4>]]}, :get, [])

但对于长生不老药新手来说这很难。

我知道了如何使用Ecto处理原始SQL。 我只是把问题分成几个小部分

(1)
sum()
在mysql中返回十进制值

query = "select item_id, sum(unit) amount from sales where item_id = ? "
result = Ecto.Adapters.SQL.query(Repo, query, [item_id])
=>我需要使用Elixir中的Decimal.to_Integer/1将
#Decimal
值转换为
#Integer

(2)
exto.Adapters.SQL.query
返回{:ok,results}

=>我应该通过
{:ok,results}
接收返回值

(3) 检索
:列
:行

columns = results.columns
rows = results.rows
(4) 将这些值列和行放在一起

Enum.zip(columns, rows) |> Enum.into(%{})

我在文档中找不到更好的方法,因此我将使用模式匹配将行的值分配给所需的变量。您甚至可以编写一个助手函数,它完全满足我的要求。(将这些结果转换为映射)。现在我只想知道如何获取列名称和行值。然后把它们放在一起,改变地图。
Enum.zip(columns, rows) |> Enum.into(%{})