Warunkowy SELECT na kolumnie

0

Cześć. Mam taki problem, ponieważ probuje z bazy wyciagnac tylko 2 kolumny "side" która daje wartosc FALSE/ TRUE i "kwota". Chce dodać do kwoty - jezeli w side jest FALSE.

Daje SELECT date, if(side="TRUE", kwota,-kwota)kwota,

I caly czas pokazuje sie blad typu:

no matching signature for operator = for argument types: bool, string. Supported signature: ANY = ANY 

Próbowałem dodac po date, cast(side as string) i dalej nic to nie zmienia.
Macie może jakieś pomysły jak by to mozna bylo naprawic ;/ ?

Z góry wielkie dzieki.
Pozdrawiam.

1

side = true, albo prawdopodobnie po prostu if(side, ...), bo = true samo w sobie nic nie robi.

1

To może odtwórz problem, bo powinno działać:

http://sqlfiddle.com/#!9/3eac1d/9

0
Panczo napisał(a):

To może odtwórz problem, bo powinno działać:

http://sqlfiddle.com/#!9/3eac1d/9

po tej zmianie wyswietla sie blad w lini przy gdzie jest if

no matching signature for operator - for argument types: string. supprted signatures:-(float64); -(NUMERIC);-(BIGNUMERIC);-(INTERVAL)"
0

Btw, jesteś pewien, że wykorzystujesz MySQL? -- te komunikaty błędów nie brzmią jak MySQL.

0
Patryk27 napisał(a):

Btw, jesteś pewien, że wykorzystujesz MySQL? -- te komunikaty błędów nie brzmią jak MySQL.

BigQuery od google cloud? jak wprowadzilem was w blad to przepraszam

0

to jakiego typu jest side

0

jak wynik jest false to w kodzie div sandboxuid="0">false </div> = %0 dla true div sandboxuid="0">true </div> = %0

0

Nie chce wiedzieć jak to jest wyświetlane tylko jaki typ jest w tej tabeli. na big query się nie znam ale z szybkiego przejrzenia dokumentacji powinieneś użyć is czyli side is true

0
Panczo napisał(a):

Nie chce wiedzieć jak to jest wyświetlane tylko jaki typ jest w tej tabeli. na big query się nie znam ale z szybkiego przejrzenia dokumentacji powinieneś użyć is czyli side is true

jest typu: BOOLEAN mode: NULLABLE

0

a warunek side is true działa

0
Panczo napisał(a):

a warunek side is true działa

caly czas to ;/ " no matching signature for operator - for argument types: string. supprted signatures:-(float64); -(NUMERIC);-(BIGNUMERIC);-(INTERVAL)"

0

ale masz tam samo true a nie "true"?

0
Panczo napisał(a):

ale masz tam samo true a nie "true"?

tak tak samo is TRUE

1

Nie mam doświadczenia z bigquery, ale patrząc na komunikat:

no matching signature for operator - for argument types: string. supprted signatures:-(float64); -(NUMERIC);-(BIGNUMERIC);-(INTERVAL)"

to on się tam przyczepia operatora - dla stringa, jakiego typu jest pole kwota?

czy samo IF(side,1,-1) zadziała?

0
domine napisał(a):
Patryk27 napisał(a):

Btw, jesteś pewien, że wykorzystujesz MySQL? -- te komunikaty błędów nie brzmią jak MySQL.

BigQuery od google cloud? jak wprowadzilem was w blad to przepraszam

SQL z niego to taki-se. Dobrze, że o prawdziwej twarzy głównego bohatera dowiedzieliśmy się juz w 6. odcinku serialu

Słusznie przepraszasz.

0
Panczo napisał(a):

Nie mam doświadczenia z bigquery, ale patrząc na komunikat:

no matching signature for operator - for argument types: string. supprted signatures:-(float64); -(NUMERIC);-(BIGNUMERIC);-(INTERVAL)"

to on się tam przyczepia operatora - dla stringa, jakiego typu jest pole kwota?

czy samo IF(side,1,-1) zadziała?

kwota jest typu string, mode nullable,
samo if(side,1,-1) dziala, wyswiestla tam gdzie false -1 a gdzie true 1

1

No to błąd powoduje kwota, musisz przekonwertować ja na jakiś typ numeryczny:

if(side,1,-1)*cast(kwota as numeric)

Z drugiej strony warto się zastanowić czy nie trzymać kwoty w bardziej odpowiednim typie.

0

bardzo wszystkim dziękuję!! jeszcze raz przepraszam za niedomowienia i wprowadzenia w błąd.

Miłego dnia!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1