我收到错误: 在预期条件的上下文中指定的非布尔类型的表达式,接近' THEN'。
我该如何解决这个问题?
这是sql。
@Entity
@Table(name = "BOOKS")
@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
@Audited
public class BOOK implements Serializable , Comparable<BOOK> {
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")
private Integer id;
private String title;
}
答案 0 :(得分:0)
您需要在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
将&#39;修复&#39;该特定错误,但其结果可能不是您正在寻找的。此外,我不相信您可以在该格式的CASE语句中使用聚合函数(即&#39; MIN&#39;),因此如果您修复原始函数,则可能会遇到另一个错误。
您必须更好地解释您的问题和所需的SQL结果。
编辑:
我应该包含更多信息。该表是重复的表 header_ids。每个header_id都有和oppty_header_id。所以有2个 oppty_header_id到每个header_id。所以我想拿分钟 每个标题id的oppty_header_id并更改其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
尽管如此,我确实需要查看源表的一些示例行以及这些相同行的示例,并在结果表中进行更改,以确保这是您正在查找的内容要做。