gpt4 book ai didi

database - 将 SAS 中的 SQL 语句转换为 POSTGRESQL

转载 作者:行者123 更新时间:2023-11-29 14:19:04 24 4
gpt4 key购买 nike

如何让这段在 SAS 中运行的 SQL 代码在 POSTGRESQL 中运行。下面是在 SAS 中有效但在 POSTGRESQL 中无效的代码。

newname='Other';

if fullstate='Alaska' then equal_area_id='RAINIER';

if fullstate='Hawaii' then equal_area_id='SHASTA';

if fullstate='California' then equal_area_id='SHASTA';

if fullstate='California' and county in (45 21 7 63 91 57 33 11 10143 47 99 77 67 109 9 5 17 61 115 113 55 97 95 3) then equal_area_id='MENDOCINO';

下面的脚本在 POSTGRESQL 中有效,但它只将新字段标记为“TEMECULA”而不是“SHIPROCK”

UPDATE new_counties2

SET newname = CASE
WHEN fullstate = 'Arizona' THEN 'TEMECULA'

WHEN fullstate = 'Arizona' AND county IN ('1', '17', '5', '15', '7') THEN 'SHIPROCK' END
WHERE newname IN ('Other')

这将适用于整个国家/地区,因此我需要以某种方式直接设置格式。

最佳答案

case 表达式中条件的顺序很重要。

假设有 3 个条件,

case when condition1 then 1
when condition2 then 2
when condition3 then 3
end

如果一行满足condition1,condition2和condition3将不会被评估。同样如果condition1不成立而condition2满足,则condition3不会被检查。

要获得所需的结果,请使用

CASE
WHEN fullstate = 'Arizona' AND county IN ('1', '17', '5', '15', '7') THEN 'SHIPROCK'
WHEN fullstate = 'Arizona' THEN 'TEMECULA'
END

关于database - 将 SAS 中的 SQL 语句转换为 POSTGRESQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136466/

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