gpt4 book ai didi

mysql - 如何在案例陈述中使用 Min

转载 作者:行者123 更新时间:2023-11-29 21:01:43 26 4
gpt4 key购买 nike

我收到错误: 在需要条件的上下文中指定的非 bool 类型表达式,位于“THEN”附近。

我该如何解决这个问题?

这里是sql。

Select 
HEADER_ID,
CASE
WHEN MIN(OPPTY_HEADER_ID) THEN STATCD='SP66'ELSE STATCD AS STACD,
TYPE, NL_IND
FROM nl_dups_load

最佳答案

您需要在 CASE WHEN 语句的第一个子句中得到 true/false 结果才能使其正常工作。

将其更改为:

Select HEADER_ID 
, CASE WHEN MIN(OPPTY_HEADER_ID) > 0 THEN STATCD = 'SP66' ELSE STATCD END AS STACD
, TYPE
, NL_IND
FROM nl_dups_load

将“修复”该特定错误,但其结果可能不是您想要的。另外,我不认为您可以在这种格式的 CASE 语句中使用聚合函数(即“MIN”),因此如果您修复原始错误,您可能会遇到另一个错误。

您必须更好地解释您的问题和所需的 SQL 结果。

编辑:

I should have included more info. This table is a table of duplicate header_ids. Each header_id has and oppty_header_id. so there are 2 oppty_header_id to each header_id. so I wan to take the min oppty_header_id per header id and change its statcd.

听起来你想要类似下面的东西(做出了很多假设)。 在使用之前进行测试,因为 UPDATE 查询不容易逆转。

UPDATE A
SET A.STATCD = 'SP66'
FROM nl_dups_load AS A
INNER JOIN (
SELECT B.HEADER_ID, MIN(OPPTY_HEADER_ID) AS MinOppty
FROM nl_dups_load AS B GROUP BY B.HEADER_ID
) AS C ON A.HEADER_ID = C.HEADER_ID AND A.OPPTY_HEADER_ID = C.MinOppty

不过,我确实需要查看源表的一些示例行以及在结果表中进行更改的相同行的示例,以确保这就是您想要执行的操作。

关于mysql - 如何在案例陈述中使用 Min,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168664/

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