【问题标题】:Error: invalid input syntax for integer: ""错误:整数的无效输入语法:“”
【发布时间】:2014-07-17 16:33:32
【问题描述】:

我有这张桌子tbl_buku:

id_buku  judul_buku   tahun_buku
1          Bioogi          2010
2          Fisika          2010
3          Informatika     2012
4          Kimia           2012

我使用这样的查询,但出现错误:

select case when t1.tahun_buku=t2.tahun_buku then ''
            else t1.tahun_buku end tahun_buku,t1.judul_buku
from tbl_buku t1 left join tbl_buku t2
on t1.id_buku-1=t2.id_buku;

我想这样显示表格:

tahun_buku     judul_buku
2010             Biologi
                 Fisika
2012             Informatika
                 Kimia

如何做到这一点?

【问题讨论】:

  • 你可能想使用lag()窗口函数。详情在这里:postgresql.org/docs/current/static/functions-window.html
  • 请举个例子。
  • SQL 是用于抑制列中重复值的错误工具。这就是报告作者的目的。 (你有一个表示级别的问题,而不是数据库问题。)

标签: sql postgresql null string window-functions


【解决方案1】:

SELECT NULLIF(lag(tahun_buku) OVER (ORDER BY tahun_buku, judul_buku)
            , tahun_buku) AS tahun_buku
     , judul_buku
FROM   tbl_buku
ORDER  BY tahun_buku, judul_buku;

【讨论】:

    【解决方案2】:

    我认为您查询中的问题是tahun_buku 属于datatype int,而您正在尝试选择一个空的string ('')。

    你必须解决方法:

    tahun_buku 更改为varchar(2010,2012..将被视为字符串,我不知道是否可以)

    设置:

    select case when t1.tahun_buku=t2.tahun_buku then null else t1.tahun_buku end tahun_buku,t1.judul_buku
    from tbl_buku t1 left join tbl_buku t2
    on t1.id_buku-1=t2.id_buku;
    

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多