SQL-在A列A上的A列中不同的每个值B中的每个值
我正在使用一个名为du_vertrag
的表工作,并且正在尝试构建一个查询,该查询选择id> id
和状态
Pairs的不同值。
Input Table:
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | beantragt | 20201008 |
6387891 | beantragt | 20201008 |
6251899 | übergabe | 20201009 |
6377042 | übergabe | 20201009 |
6387891 | übergabe | 20201009 |
6251899 | übergabe | 20201010 |
6377042 | übergabe | 20201010 |
6387891 | übergabe | 20201010 |
6251899 | aktiv | 20201024 |
6377042 | aktiv | 20201024 |
6387891 | aktiv | 20201024 |
Desired Output:
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | BEANTRAGT | 20201008 |
6387891 | BEANTRAGT | 。 |
6251899übergabe20201009 | , | 更改 |
状态 | 6377042übergabe20201009 | 387891 |
了 | 20201008 | 我 |
一个 | AKTIV | DateTime |
6387891 | 状态 | 而 |
则 | 第 | 20201024 |
需要每个ID的新
I'm working with a table called du_vertrag
, and I'm trying to build a query that selects distinct values for id
and status
pairs.
Input Table:
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | beantragt | 20201008 |
6387891 | beantragt | 20201008 |
6251899 | übergabe | 20201009 |
6377042 | übergabe | 20201009 |
6387891 | übergabe | 20201009 |
6251899 | übergabe | 20201010 |
6377042 | übergabe | 20201010 |
6387891 | übergabe | 20201010 |
6251899 | aktiv | 20201024 |
6377042 | aktiv | 20201024 |
6387891 | aktiv | 20201024 |
Desired Output:
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | beantragt | 20201008 |
6387891 | beantragt | 20201008 |
6251899 | übergabe | 20201009 |
6377042 | übergabe | 20201009 |
6387891 | übergabe | 20201009 |
6251899 | aktiv | 20201024 |
6377042 | aktiv | 20201024 |
6387891 | aktiv | 20201024 |
I need for every id the new status with the first datetime the status changed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您需要每个“ id ”和“ 状态”的不同值,则可以在这两个字段上进行汇总,然后选择最低日期以获取输出:
如果您可以共享您的DBMS是什么,我可以将小提琴链接起来,您可以在其中测试此解决方案。
If you need distinct values for each "id" and "status", you can aggregate over those two fields and select the minimum date to get your output:
If you can share what your DBMS is, I can link a fiddle where you can test this solution.
这似乎很简单汇总
This appears to be simple aggregation
选择 *
从(选择ID,状态,
row_number()over(iD分区,状态顺序按日期asc)为row_num
来自du_vertrag)d
d.row_num = 1
SELECT *
FROM (SELECT id, status,
row_number() over (partition by id, status order by date asc) as row_num
FROM du_vertrag) d
where d.row_num = 1