gpt4 book ai didi

mysql - sql server 函数在 maxdate 时返回 true

转载 作者:行者123 更新时间:2023-11-29 21:50:08 24 4
gpt4 key购买 nike

我需要一个名为 TheLast (code, id_order) 的函数,作为客户和订单,如果订单是客户的最后一个订单,则返回 TRUE。我有 2 个表 1- 客户有 - 代码 (pk)、first_tname、last_name 和表订单有 - Id(pk)、code_customer(fk)、NrOrder、Date

我的代码是:

 ALTER function [dbo].[thelast](@code varchar(50), @ID varchar (50))
returns varchar(255)
as
begin

declare @islast as varchar(50), @data as date

select @data=o.Date
from order as o
inner join customer as c
on o.Code_customer=c.Code
where @ID=o.ID and @code=c.Code

if (@data=max(@data))
begin
set @islast='True'
end
else
set @islast= 'False'

return @islast
end
;

当我执行查询以选择first_name、NrOrder 并调用函数时,已成功完成但返回全部“True”

提前致谢

最佳答案

我会将你的返回类型更改为一点,1代表true,0代表false,但我想这取决于你。
基本逻辑是:
1.从订单表中获取客户的最后一个订单ID
2. 如果订单 ID 与传入的 ID 匹配,则传入的 ID 是客户最新的订单,因此将返回值设置为 true。如果 ID 不匹配,则返回 false。

    ALTER function [dbo].[thelast](@code varchar(50), @ID varchar (50))
returns BIT
as
begin

declare @islast as BIT, @data as date

declare @lastOrderId AS VARCHAR(50);
SET @lastOrderId = (SELECT TOP 1 ID FROM Order WHERE code_customer=@code ORDER BY Date desc) -- This gets the last order for this customer

if (@lastOrderId=ID)
begin
set @islast=1
end
else
set @islast= 0

return @islast
end
;

关于mysql - sql server 函数在 maxdate 时返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723248/

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