Fehler: ungültige Eingabesyntax für Ganzzahl: ""

Ich habe diese Tabelle tbl_buku :

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

Ich benutze eine Abfrage wie diese, aber ich bekomme einen Fehler:

 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; 

Ich möchte eine Tabelle so zeigen:

 tahun_buku judul_buku 2010 Biologi Fisika 2012 Informatika Kimia 

Wie erreiche ich das?

Solutions Collecting From Web of "Fehler: ungültige Eingabesyntax für Ganzzahl: """

Ich denke, das Problem in Ihrer Abfrage ist, dass tahun_buku vom datatype int und Sie versuchen, eine leere string ( '' ) auszuwählen.

Sie müssen umgehen:

Ändere tahun_buku , um varchar (2010,2012..wird als characterfolgen betrachtet, ich weiß nicht, ob es ok ist)

Einstellen:

 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; 
  • Verwenden Sie die windowsfunktion lag() , um Werte aus der vorherigen Zeile abzurufen.

  • Verwenden Sie NULL für "leere" Werte in einer numerischen Spalte – wie bereits von @apomene vorgeschlagen .
    Die leere characterfolge '' kann nur in charactertypen wie text oder varchar .

  • Verwenden NULLIF() in diesem Fall NULLIF() um den NULL-Wert zu replace.

 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;