我在组合insert,make_date和case时遇到了一个奇怪的问题。我正在使用9.5版的Postgre服务器。
这是我的代码的抽象版本:
值是varchar,日期是日期。
INSERT INTO Table (value, date)
SELECT othervalue,
(SELECT MAKE_DATE (
SELECT MIN(...),
CASE
WHEN 1 THEN 0
WHEN 2 THEN 1
END,1)) FROM OtherTable
GROUP BY value
SELECT部分正确执行其工作(返回值和正确构造的日期)
编辑:我的意思是,SELECT othervalue(SELECT Make_Date(..))在运行时可以正常工作。就是在INSERT INTO(SELECT othervalue,(SELECT Make_Date(..)))插入值时,但日期为null的时候。
对我来说奇怪的是INSERT为日期插入NULL。
是什么原因导致这种行为?
答案 0 :(得分:0)
也许会起作用
junit-platfrom-xyz
答案 1 :(得分:0)
INSERT INTO test_tbl (value, date) VALUES (
(SELECT othervalue FROM OtherTable ORDER BY date LIMIT 1),
(SELECT
MAKE_DATE (
SELECT MIN(...),
CASE
WHEN 1 THEN 0
WHEN 2 THEN 1
END,1) FROM OtherTable
GROUP BY value))