Klurig SQL-fråga

  • Thread starter Thread starter s9d8as0vjk
  • Start date Start date

s9d8as0vjk

Guest
Sitter på jobbet med ett jäkligt klurigt problem (iallafall för mig)

Jag ska göra en SQL-fråga som listar olika datormodeller (med antal av varje modell) ur en SMS2003-databas men får problem med "friendlyname" på det som finns i tabellen.


Tabellen ser ut typ så här
Manufacturer0 Model0
Compaq Evo N610c (bla bla 1)
Compaq Evo N610c (bla bla 2)
Compaq Evo N610c (bla bla 3)
Hewlett-Packard HP d530 SFF(DN204S)
Hewlett-Packard HP d530 SFF(DZ035T)


Min SQL-fråga som jag knåpar på ser ut så här:
select Manufacturer0,
Model0 = CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END, COUNT(Model0) AS 'Count'

FROM v_GS_COMPUTER_SYSTEM

GROUP BY Manufacturer0, Model0
ORDER BY Manufacturer0, Model0


Problemet för mig är att resultatet jag får ut blir typ så här:
Compaq Evo N610c 39
Compaq Evo N610c 14
Compaq Evo N610c 2
Hewlett-Packard HP d530 SFF(DN204S) 73
Hewlett-Packard HP d530 SFF(DZ035T) 34

Och jag skulle vilja ha resultatet så här:
Compaq Evo N610c 55
Hewlett-Packard d530 SFF 107


Vore MYCKET tacksam om någon SQL-guru kunde lösa min gåta. :)
 
Om du skapar en inre select och gör count på den?

SELECT A.Manufacturer0, A.Model0, A.Count(Model0) from
(select
Manufacturer0,
Model0 = CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END) A
GROUP BY Manufacturer0, Model0
ORDER BY Manufacturer0, Model0

Osäker på om jag skrivit syntaktiskt korrekt men du fattar säkert vad jag menar.
 
stavgren skrev:
Om du skapar en inre select och gör count på den?

SELECT A.Manufacturer0, A.Model0, A.Count(Model0) from
(select
Manufacturer0,
Model0 = CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END) A
GROUP BY Manufacturer0, Model0
ORDER BY Manufacturer0, Model0

Osäker på om jag skrivit syntaktiskt korrekt men du fattar säkert vad jag menar.


Hmm, det börjar närma sig och du är nog inne på rätt spår. Dock verkar inte din SQL-fråga vara helt korrekt. Får "Invalid column name 'Manufacturer0'.". La jag till "FROM v_GS_COMPUTER_SYSTEM GROUP BY Manufacturer0, Model0" och kom lite längre. Nu har jag kört med följande:

SELECT A.Manufacturer0, A.Model0, COUNT(A.Model0) AS 'Count'
FROM (select Manufacturer0, Model0 =
CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END FROM v_GS_COMPUTER_SYSTEM GROUP BY Manufacturer0, Model0) A
GROUP BY A.Manufacturer0, A.Model0
ORDER BY A.Manufacturer0, A.Model0


Resultatet blir väl sådär. Den räknar modellerna som man lagt en "WHEN"-sats på korrekt. Däremot dom som det inte ligger någon "WHEN"-sats på räknas bara som 1 även fast det finns fler av samma ... några idéer ?
 
Mr B skrev:
... några idéer ?
Miss av mig, givetvis måste tabellnamnet vara med i den inre frågan.

Fattar inte riktigt det sista du skriver men prova så här istället om det funkar bättre (i princip samma, slängde med en distinct o la till lite alias):

SELECT DISTINCT
A.Manufacturer0, A.Model0, COUNT(A.Model0) AS 'Count'
FROM
(SELECT Manufacturer0, Model0 =
CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END Model0 FROM v_GS_COMPUTER_SYSTEM) A
GROUP BY A.Manufacturer0, A.Model0
ORDER BY A.Manufacturer0, A.Model0
 
stavgren skrev:
Miss av mig, givetvis måste tabellnamnet vara med i den inre frågan.

Fattar inte riktigt det sista du skriver men prova så här istället om det funkar bättre (i princip samma, slängde med en distinct o la till lite alias):

SELECT DISTINCT
A.Manufacturer0, A.Model0, COUNT(A.Model0) AS 'Count'
FROM
(SELECT Manufacturer0, Model0 =
CASE
WHEN Model0 LIKE 'Evo N610c%' THEN 'Evo N610c'
WHEN Model0 LIKE 'HP d530 SFF%' THEN 'd530 SFF'
ELSE Model0
END Model0 FROM v_GS_COMPUTER_SYSTEM) A
GROUP BY A.Manufacturer0, A.Model0
ORDER BY A.Manufacturer0, A.Model0

Whohoo ! Den du skickade nu funkade nästan. Bara ta bort Model0 ur
"END Model0 FROM v_GS_COMPUTER_SYSTEM) A"
Så funkade den kanon !

Tackar så supermycket
 
Nyheter
En dag på dragstrippen

Efter att ha varit aktiv so...

Steve McQueens Scott Squirrel till salu

Detta Scott Flying Squirrel...

Dags för Strängnäs Bike Show!

Sista lördagen i augusti är...

Bikeweekend på Kjula denna helg

Den 22-23 augusti är det da...

Motorcycle Inferno #8

Den 5 september blir Laxhol...

Tiotusentals körde Mälaren Runt

Lördagen den 15 augusti gen...

Mälaren Runt fyller 40 år

Nu på lördagen den 15 augus...

Steve Holcombe klar för GGN!

Pressmeddelande 2026-08-10 ...

Nya Chief Vintage Sturgis

I samband med 86:e Sturgis ...

Missa inte Bikes sommarnummer!

Innehåll Bike powered by...

Back
Top