Avatar billede Marlov Juniormester
17. februar 2023 - 06:50 Der er 11 kommentarer

Hjælp til SQL kode

Hej Eksperter.

Jeg har en kode som jeg ikke kan få til at returnere det jeg gerne vil have, jeg prøver og samle 2 tal således at de står som f.eks. 44/82
Begge tal kommer fra et numerisk fejl, så tænker at mine problemer ligger i at konvertere fra tal til tekst.
Fejlen jeg får er "Error converting data type varchar to float"

SELECT    dbo.Specs.ItemID, CASE dbo.Specs.Number WHEN ' ' THEN Specs_1.Number ELSE CAST(dbo.Specs.Number AS varchar) + '/' + CAST(Specs_1.Number AS varchar) END AS H
FROM        dbo.Specs INNER JOIN
                  dbo.Specs AS Specs_1 ON dbo.Specs.ItemID = Specs_1.ItemID
WHERE    (dbo.Specs.SpecType = 321) AND (Specs_1.SpecType = 241)
GROUP BY dbo.Specs.ItemID, dbo.Specs.Number, Specs_1.Number
HAVING    (dbo.Specs.ItemID = 25532)

Men jeg er lidt lost i hvordan jeg fixer den...

Håber der en der kan hjælpe.
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 07:23 #1
Et hurtigt gæt:  Din WHEN THEN og din ELSE giver henholdsvis et tal (Specs_1.Number) og en streng (...varchar,,,).

Mn begge skal være samme type, eller kunne konverteres automatisk. Mon ikke du skal prøve at lave Specs_1.Number til en varchar på samme måde som i ELSE?
Avatar billede Marlov Juniormester
17. februar 2023 - 07:31 #2
Hej Erik,

Tak for buddet, men det giver desværre samme fejl.
Hvis jeg fjerner + '/' + fungere koden.
Så det er i den del hvor fejlen er.
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 07:38 #3
Hmm  ...  Må jeg se hvad du prøver med min "løsning".
Avatar billede Marlov Juniormester
17. februar 2023 - 07:43 #4
Som jeg forstod din besked så ville du have VARCHAR på efter min THEN.

CASE dbo.Specs.Number WHEN ' ' THEN [b]CAST(Specs_1.Number AS VARCHAR)[b\] ELSE CAST(dbo.Specs.Number as AS VARCHAR) + '/' + CAST(Specs_1.Number AS VARCHAR) END AS H
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 07:59 #5
Korrekt forstået. Men så forstår jeg ingenting ... Samme fejlbesked?
Avatar billede Marlov Juniormester
17. februar 2023 - 08:01 #6
Nej nu er den første fejl kode:  Unable to parse query text.
Og der efter siger den "Inccorect syntax near the keyword AS"
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 08:08 #7
Det ver bedre. Første fejl skyldes at man ikke bare blander tal og strenge i en CASE. Dette giver din første fejl:

  select case 7 when '' then 18 else 'hej' end as h

mens dette går godt

  select case 7 when '' then '18' else 'hej' end as h

Hvordan ser det hele ud nu?
Avatar billede Marlov Juniormester
17. februar 2023 - 08:58 #8
Den fejler stadig.
kan ikke sætte ' ' om mine Specs_1.Number  for så returneres værdien ikke men kun teksten 'Specs_1.Number '

Forstår godt din pointe men det virker ikke desværre.
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 09:01 #9
Du skal lave konverteringen som en CAST, men hvordan ser det ud, og hvad dækker "virker ikke" over.
Avatar billede Marlov Juniormester
17. februar 2023 - 11:24 #10
Ja så du vil have det som
THEN CAST('Specs_1.Number ' as VARCHAR) ELSE ...

CASE dbo.Specs.Number WHEN '' THEN CAST('Specs_1.Number' as VARCHAR) ELSE CAST(dbo.Specs.Number as AS VARCHAR) + '/' + CAST(Specs_1.Number AS VARCHAR) END AS H

Den skriver Incorrect syntax near 'AS'
Avatar billede erikjacobsen Ekspert
17. februar 2023 - 13:20 #11
'Specs_1.Number '    skal ikke være i enkeltstroffer. Helt uden.

Mit eksempel med 18 g '18' er på værdier, ikke på navne.

Men fejlen er nok, at du har skrevet AS to gange i rap.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester