gpt4 book ai didi

mysql - Foxpro复杂子查询

转载 作者:行者123 更新时间:2023-11-29 13:36:42 24 4
gpt4 key购买 nike

我在 FoxPro 2.6 中执行查询时遇到困难(没有其他选择)

由于某些原因联合查询不起作用,请注意。

stockw (item, qte, dat) item is key
shist (item, qte, date) each row is a purchase for item and qte and date

下面的查询将计算 shist 中某件商品的首次购买次数,以了解自年初以来我们已经销售了每件商品多少个月

select shist.item as s_item, MIN(shist.date),stockw.qte as qte_remain,;
IIF( YEAR(MIN(shist.date)) < 2013, MONTH(DATE()), MONTH(DATE())-MONTH(shist.date)+1 ) as months;
FROM shist,stockw;
WHERE (shist.item LIKE 'LF-TK%' OR shist.item LIKE 'PL%' OR shist.item LIKE 'LF-A%') AND stockw.item = shist.item;
GROUP BY shist.item;
into CURSOR x

我想要:- 计算从 2013 年初至今每个项目的平均 qte SUM(shist.qte)/月(月份是根据每个项目的上述查询计算得出的)

也许在不同的查询中我想要以下内容:- 选择从 2013 年初到现在每个项目每月 shist.qte 总和的最大值(获取最高月份)。

最佳答案

由于我不太清楚您将在哪里应用联合,而且您似乎多次运行查询,因此这是一个非常古老的技巧,在 VFP 的旧时代可用...

当您对游标进行选择时,游标通常是只读的,并且不能读写以附加到...但是,如果您使用第一次运行查询的结果作为不同的别名,您可以附加到它。类似于...

use in select( "C_ThisIsMaster" )

for i = 1 to 10
use in select( "C_ThisRun" )
select blah, blah2, blah3 ;
from YourTables;
where SomeKey = SomeIDForCyclei;
into cursor C_ThisRun

if not used( "C_ThisIsMaster" )
select 0
use ( dbf( "C_ThisRun") ) again alias C_ThisIsMaster
else
select C_ThisIsMaster
append from dbf( "C_ThisRun" )
endif
endfor

for[i] 循环只是一个示例,但如果您运行了许多需要执行 UNION 的循环,则可以将其放入查询中并进行模拟,例如通过

select * 
from SomeTable
where SomeCondition
into cursor C_DoTheseItems

use in select( "C_ThisIsMaster" )

select C_DoTheseItems
do while not eof()
Do the same thing as inside the FOR loop above

select C_DoTheseItems
skip
enddo

我知道VFP有scan/endscan,但不记得它起源于多久,所以这里使用了do while NOT eof()...

在任一选项的末尾都会为您提供您尝试处理的每个项目的模拟 UNION 并生成一个“别名”结果“C_ThisIsMaster”以供使用

关于mysql - Foxpro复杂子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647035/

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