sql - 如何将语法从 SQL Server 转换为 Postgresql?

标签 sql sql-server database postgresql

我正在从使用 SQL Server 转向使用 Postgresql,但我在指定变量时遇到了问题。

在 SQL Server 中我写了这样的东西,效果很好:

    --Compute the probabilities for unique users 
    declare @users_total decimal(18,2)
    select @users_total=count(*) from unique_users_table 
    select column1, uvs, uvs/@users_totalm as puvs
    into probabilities_table 
    from column_uniquevisits_table 

我试图像这样将它翻译成 Postgresql 但出现错误:

    --Compute the probabilities for unique users  
    declare users_total numeric(18,2);
    select users_total=count(*)  
    from unique_users_table
    select coumn1, uvs, uvs/users_total as puvs 
    insert into probabilitiestable
    from column_uniquevisits_table

在 Postgresql 中编写我最初在 SQL Server 中的内容的正确方法是什么?

最佳答案

如果要基于选择创建表,请使用create table as select

不需要声明(无论如何都不能在 PL/pgSQL 函数之外使用)

create table probabilitiestable
as
select column1, 
       uvs, 
       uvs::numeric/(select count(*) from count(*) from unique_users_table) as puvs 
from column_uniquevisits_table;

强制转换 ::numeric 是必要的,否则除法将使用整数运算完成,这意味着您不会得到任何小数值。如果 uvs 已经定义为 numeric(或 decimalfloat),那么您就不需要它了。

关于sql - 如何将语法从 SQL Server 转换为 Postgresql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472584/

相关文章:

mysql - 在数据库中存储 MD5 时 BINARY(16) 和 CHAR(32) 之间的区别

sql - 如果满足条件,则选择、检查和插入

java - MySQL 中保存的日期无效

sql - 如何使用 Microsoft SQL Server 2008 获取日期比当前日期晚 6 个月的所有记录?

java - 如何使用 preparedstatement 获取最后插入的行的 id?

java - 在 Maven 项目中重用常量和属性?

sql - SQL Server执行get-wmiobject时出现错误

python - 以天为单位的日期时间差异的高性能计算

sql - 从 Azure 导出时,本地主机 SQL Server 数据库速度极慢且站点超时

c# - CSLA数据库功能