如何根据另一列的值得出一列的值?

How do I derive a value for a column based on another column's value?

我有一个 projects table 如下所示。那里有两个 略有不同的 id 列 idxidy——一个 idx 可以有多个 idy(例如 版本控制)。

  idx,     idy,         name,  use_count, usage_date
-----, -------, ------------, ----------, ----------
   x1,     x11,    x1 name 1,         10,          1
   x1,     x13,    x1 name 3,         10,          3
   x1,     x12,    x1 name 2,         10,          2
   x2,     x21,    x2 name 1,         10,          2
   x3,     x31,    x3 name 1,         10,          2

我们的目标是巩固使用,这样对于每个 idx,结果将 有:

此外,usage_date 必须在一定范围内,但这希望是微不足道的。

  idx,     idy,         name,  use_count, usage_date
-----, -------, ------------, ----------, ----------
   x1,     x13,    x1 name 3,         30,          3
   x2,     x21,    x2 name 1,         10,          2
   x3,     x31,    x3 name 1,         10,          2

到目前为止,我已经

SELECT
  idx, idy, name,
  sum(use_count) as use_count,
  usage_date
FROM
  projects
WHERE
  usage_date <= 3
GROUP BY
  idx

..但无法弄清楚如何导出项目的最新名称 (ID x1

你可以试试下面的方法-

DEMO

select X.idx,idy,name,X.use_count,usage_date from
(
select idx,sum(use_count) as use_count
from t
group by idx
)X inner join
(
select * from t a where usage_date = (select max(usage_date) from t b where a.idx=b.idx)
)Y on X.idx=Y.idx

输出:

idx idy   name       use_count  usage_date
x1  x13   x1 name 3     30            3
x2  x21   x2 name 1     10            2
x3  x31   x3 name 1     10            2