Nåt i stil med tackar!! Följande kanske kan fungera? Om du använder en databas som har stöd för funktionen ABS är det lätt fixat. det där med "transform" pch "pivot query" verkar nice! Har en SQL på 3 veckor bok där det inte är nämnt något om detta. Är det special och var kan man få mer info om detta? Jag tror, ska inte svära på det, att det inte hör till vanlig SQL utan det är beroende på vilken databas du använder om det finns eller inte. I regel ska man försöka undvika funktioner som inte stöds av andra databaser (speciellt om man räknar med att någon gång behöva porta till andra databaser). Transform och Pivot är mig veterligen ny funktionalitet i Microsoft SQL Server 2005 (fanns inte i 2000), sedan om dessa ingår i en standard eller ej vet jag inte. Transform och Pivot finns i Access och SQLServer. Vet att det finns i Oracle också men syntaxen är inte riktigt lika. Vet inte hur det är med MySQL.SQL nöt
Jag har en tabell som ser ut som följande :
ANSNR TODO
--------------------------------------------------
1 GÅ
2 STANNA
1 STANNA
1 GÅ
3 GÅ
Jag vill ställa en fråga som räknar ut hur många GÅ och STANNA ansnr 1 har .
Min fråga nedan levererar ett svar med tre rader. Hur skall man skriva för att det bara skall bli ett svar med en rad?
<code>
SELECT
(select count(TODO) from tabell where TODO='GÅ' and ansnr = 1;) AS _GA,
(select count(TODO) from tabell where TODO='STANNA' and ansnr = 1;) AS _STANNA
FROM tabell
WHERE ansnr=1;
</code>Sv: SQL nöt
TRANSFORM Count(TODO)
SELECT ANSNR
FROM Tabell
GROUP BY ANSNR
PIVOT TODO IN ("GÅ", "STANNA")
(Har inte testat men sök efter crosstab query eller pivot query så hittar du nog något)Sv:SQL nöt
men om jag nu vill räkna ut en ny kolumn av de svar jag får genom formeln GÅ - STANNA.... är det möjligt?Sv: SQL nöt
<code>
SELECT SUM(TODO='GÅ') AS _GA, SUM(TODO='STANNA') AS _STANNA, SUM(TODO='GÅ') - SUM(TODO='STANNA') AS _DIFF FROM tabell GROUP BY ansnr WHERE ansnr = 1
</code>Sv: SQL nöt
<code>
SELECT SUM(TODO='GÅ') AS _GA, SUM(TODO='STANNA') AS _STANNA, ABS(SUM(TODO='GÅ') - SUM(TODO='STANNA')) AS _DIFF FROM tabell GROUP BY ansnr WHERE ansnr = 1
</code>Sv:SQL nöt
Sv: SQL nöt
Sv:SQL nöt
Sv:SQL nöt