gpt4 book ai didi

mysql - 从 SQL 表中提取当前数据值和相应的子值

转载 作者:行者123 更新时间:2023-11-29 22:03:57 25 4
gpt4 key购买 nike

如果这个问题已经得到解答,只需将我链接到答案,我就会坐在那里思考“为什么我在搜索时没有想到这个?”

我有两个数据库,我正在尝试使用 SQL 从中提取数据。数据库是父数据库和子数据库。

每个 - parent ,他 - child

Per 包含以下列信息:Site、varfrom、varto、sdate、table 和其他不重要的信息

Hed 具有以下列信息:Site、varfrom、varto、table、release、name 和其他不重要的信息

每个示例 - true 和 false 是额外的列之一

STATION VARFROM VARTO   SDATE   STIME   REFSTN  REFTAB
221209A 100.00 141 8/11/2006 1200.00 221209A 23 FALSE
221209A 100.00 141 22/04/2007 400.00 221209A 23 TRUE
221209A 100.00 141 30/04/2007 1600.00 221209A 24 FALSE
221209A 100.00 141 2/11/2007 0.00 221209A 24 TRUE
221209A 100.00 141 5/11/2007 2000.00 221209A 25 FALSE
221209A 100.00 141 24/11/2008 0.00 221209A 26 FALSE
221209A 100.00 141 16/02/2010 45.00 221209A 27 FALSE
221210A 100.00 141 22/08/1972 1545.00 221210A 1 FALSE
221210A 100.00 141 3/06/1978 1500.00 221210A 2 FALSE
221210A 100.00 141 5/07/1982 1130.00 221210A 1 FALSE
221210A 100.00 141 28/07/1984 1225.00 221210A 3 FALSE
221210A 100.00 141 24/02/1987 1200.00 221210A 2 FALSE
221210A 100.00 141 28/04/1988 1600.00 221210A 4 FALSE
221210A 100.00 141 5/01/1992 1430.00 221210A 3 FALSE

他的例子

STATION     VARFROM VARTO   TABLE   RELEASE NAME
221209A 100.00 141 23 0 23.0
221209A 100.00 141 24 0 24.0
221209A 100.00 141 25 2 25.02
221209A 100.00 141 25 1 25.01
221209A 100.00 141 25 0 25.00
221209A 100.00 141 26 0 26.00
221209A 100.00 141 27 0 27.00
221210A 100.00 141 1 3 1.03
221210A 100.00 141 1 2 1 B
221210A 100.00 141 2 6 2.06
221210A 100.00 141 2 5 2.05
221210A 100.00 141 2 4 2 D
221210A 100.00 141 3 1 3.01
221210A 100.00 141 3 0 3
221210A 100.00 141 4 2 4.02
221210A 100.00 141 4 1 4 A

所以我想要的是它返回每个站点的最新日期,然后给我每个站点的当前名称

所以这个例子的答案是

Site    Varfrom Varto sdate      name
221209A 100.00 141 16/02/2010 27.00
221210A 100.00 141 5/01/1992 3.01

网站来自 Per 还是 Hed 并不重要。

目前,我进行了多次编码尝试,除了名称不正确之外,我得到了所有信息。下面是一个例子。我只是不知道如何让它为我提供具有正确名称的最新日期。

select
hed.site,
hed.name,
max(per.sdate) as "Period",
hed.varfrom,
hed.varto
from hed inner join per
on hed.site=per.site AND
hed.table=per.reftab
where
hed.varfrom=100.00
AND hed.varto=141

任何帮助将不胜感激。

最佳答案

试试这个

;with cte as (
select site,Varfrom ,Varto,reftable,sdate,r=ROW_NUMBER() over(partition by site order by sdate desc) from per
)

select per.site,per.Varfrom ,per.Varto,hed.name from cte per
inner join hed on per.site = hed.site and per.reftable=hed.reftable and per.r=1

关于mysql - 从 SQL 表中提取当前数据值和相应的子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com