您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在PostgreSQL中将行值用作列

在PostgreSQL中将行值用作列

一个crosstab()为你的榜样查询应该是这样的:

要填写0结果NULL值(在注释中请求),请使用COALESCE()

SELECT brand_id
     , COALESCE(jan, 0) AS "Jan-2012"
     , COALESCE(feb, 0) AS "Feb-2012"
     , COALESCE(mar, 0) AS "Mar-2012"
     , COALESCE(apr, 0) AS "Apr-2012"
FROM crosstab(
       'SELECT brand_id, month, total
        FROM   brands
        ORDER  BY 1'

       ,$$VALUES ('Jan-2012'::text), ('Feb-2012'), ('Mar-2012'), ('Apr-2012')$$
 ) AS ct (
   brand_id int
 , jan numeric    -- use actual data type!
 , feb numeric
 , mar numeric
 , apr numeric);

除了:不使用保留字“ date”作为列名,即使Postgres允许也不使用它。

SQLServer 2022/1/1 18:39:55 有385人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶