Error: invalid input syntax for integer: ""
Habe ich diese Tabelle tbl_buku
:
id_buku judul_buku tahun_buku
1 Bioogi 2010
2 Fisika 2010
3 Informatika 2012
4 Kimia 2012
Ich mit der Abfrage wie diese, aber ich erhalte eine Fehlermeldung:
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;
Möchte ich zeigen Tabelle wie diese:
tahun_buku judul_buku
2010 Biologi
Fisika
2012 Informatika
Kimia
Wie Sie diese erreichen?
Sie verwenden möchten, können
bitte geben Sie mir ein Beispiel.
SQL ist das falsche Werkzeug zur Unterdrückung von wiederholten Werten in einer Spalte. Das ist es, was Bericht Schriftsteller sind. (Sie haben eine Präsentation-level-problem, nicht ein Datenbank problem.)
lag()
- Fenster-Funktion. Details hier: postgresql.org/docs/current/static/functions-window.htmlbitte geben Sie mir ein Beispiel.
SQL ist das falsche Werkzeug zur Unterdrückung von wiederholten Werten in einer Spalte. Das ist es, was Bericht Schriftsteller sind. (Sie haben eine Präsentation-level-problem, nicht ein Datenbank problem.)
InformationsquelleAutor Trisna | 2014-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass das problem in der Abfrage ist, dass
tahun_buku
istdatatype int
, und Sie versuchen, wählen Sie einen leerenstring
(''
).Müssen Sie workarounds:
Ändern
tahun_buku
zuvarchar
(2010,2012..wird prüfen, wie strings, die ich nicht weiß, ob es ok ist)Set:
InformationsquelleAutor apomene
Verwenden Sie die Fenster-Funktion
lag()
, um Werte aus der vorherigen Zeile.Verwenden
NULL
für die "leeren" Werte in einer numerische Spalte - wie @apomene bereits vorgeschlagen.Der leere string
''
kann nur verwendet werden, in Charakter-Typen wietext
odervarchar
.Verwenden
NULLIF()
in diesem speziellen Fall zu ersetzen, die dem NULL-Wert.InformationsquelleAutor Erwin Brandstetter