我试图通过调用函数来执行代码,但结果与执行代码本身不同
WITH cte AS ( SELECT
ID
, Attr_1
, Attr_2
, Attr_3
, CAST(GREATEST(
CAST(COALESCE(Attr_1_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_2_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_3_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_4_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_5_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_6_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_7_Update_Dt, date '1900-01-01') AS INT)
, CAST(COALESCE(Attr_8_Update_Dt, date '1900-01-01') AS INT)
)as date) as maxdate
FROM yourtable)
SELECT
ID
, Attr_1
, Attr_2
, Attr_3
, maxdate
FROM (
SELECT
ID
, Attr_1
, Attr_2
, Attr_3
, maxdate
, ROW_NUMBER() OVER(PARTITION BY ID
ORDER BY maxdate DESC) as rn
FROM cte
) d
WHERE rn = 1
我试图通过函数实现手动执行代码上显示的内容,怎么做?
答案 0 :(得分:1)
你需要了解数据的范围,你需要将数据传递给你的函数的引用(使用&)函数,以允许函数改变原始数组而不是数据的本地副本。
function assignNilai(&$arr2,$hari,$sesi,$ruang,$arr1,$draft){
&$arr2
位允许该函数修改原始数组。
在原始代码中,该函数正在使用它自己的数组版本,所以当函数完成时,这个版本就被丢弃了,数组的原始值仍然是相同的。