错误:整数的输入语法无效:""

时间:2014-05-28 12:38:27

标签: sql postgresql null string window-functions

我有这张表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

如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

我认为您的查询中的问题是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;

答案 1 :(得分:2)

  • 使用window function lag()获取上一行的值。

  • NULL用于numeric column中的“空”值 - 例如@apomene already suggested
    空字符串''只能在text varcharSELECT 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; 中使用。

  • 在此特定情况下使用character types替换NULL值。

{{1}}