如何将下面的 Oracle 代码转换为 BigQuery?
max(to_date(BIC_GM_AGCPOAODS00_BO_VW.BOUND_DATE,'yyyymmdd'))
当我尝试此代码时:
SELECT A._BIC_GCISBN,
max(cast(A.BOUND_DATE as date),'yyyymmdd')
FROM `BIC_GM_AGCPOAODS00_BO_VW` A
WHERE A._BIC_ZC2GRIRIN = 'G' AND A._BIC_ZCLOEKZ = ' '
GROUP BY A._BIC_GCISBN
我收到错误:
对于参数类型的聚合函数 MAX 没有匹配的签名:日期、字符串。支持的签名:最大(任意( 在 [15:2]
在 BigQuery 中,您需要parse_date()
:
SELECT A._BIC_GCISBN,
MAX(PARSE_DATE('%Y%m%d', A.BOUND_DATE))
FROM `BIC_GM_AGCPOAODS00_BO_VW`A
WHERE A._BIC_ZC2GRIRIN = 'G' AND A._BIC_ZCLOEKZ = ' '
GROUP BY A._BIC_GCISBN;
您应该使用date
来存储值,但有时我们无法控制数据的存储方式。
编辑:
给定您的数据格式,您也可以将其编写为:
SELECT A._BIC_GCISBN,
PARSE_DATE('%Y%m%d', MAX(A.BOUND_DATE))
FROM `BIC_GM_AGCPOAODS00_BO_VW`A
WHERE A._BIC_ZC2GRIRIN = 'G' AND A._BIC_ZCLOEKZ = ' '
GROUP BY A._BIC_GCISBN;
我更喜欢第一个版本,因为它很容易推广到任何数据格式。 这可能更有效。