【发布时间】:2021-09-02 10:52:44
【问题描述】:
我们有两个表,Users 和 History。
Users 表有以下列
| Users | Active |
|---|---|
| A | Y |
| B | Y |
| C | Y |
| X | Y |
| Y | Y |
| Z | Y |
History 表有以下列
| users | startdate | enddate |
|---|---|---|
| A | DD-MMM-YY | DD-MMM-YY |
| A | DD-MMM-YY | DD-MMM-YY |
| B | DD-MMM-YY | DD-MMM-YY |
| C | DD-MMM-YY | DD-MMM-YY |
| B | DD-MMM-YY | DD-MMM-YY |
| A | DD-MMM-YY | DD-MMM-YY |
| X | DD-MMM-YY | DD-MMM-YY |
| Y | DD-MMM-YY | DD-MMM-YY |
从History 表中,我们使用以下查询查询自过去六个月以来活跃的用户
SELECT
users,
MAX(CAST(start_date) AS date) AS "start",
MAX(CAST(end_date) AS date) AS "end"
FROM
history
WHERE
start > 'DD-MMM-YYY'
GROUP BY
users
这是检索以下详细信息
| users | start | end |
|---|---|---|
| A | DD-MMM-YY | DD-MMM-YY |
| X | DD-MMM-YY | DD-MMM-YY |
| Y | DD-MMM-YY | DD-MMM-YY |
现在基于此详细信息,我想更改 Users 表中的 Active 列,并将其从 Y 设置为 N,以用于未从第二个查询中检索到的用户。
输出应该是这样的
| Users | Active |
|---|---|
| A | Y |
| B | N |
| C | N |
| X | Y |
| Y | Y |
| Z | N |
有人可以帮忙实现吗?
【问题讨论】:
标签: sql oracle sql-update