12. november 2014 - 13:13Der er
7 kommentarer og 1 løsning
Udelukke data i udtræk
Har lidt problemer med mit udtræk.
Jeg har denne sql-sætning som laver summering på alle Customer ud fra nedenstående krav SELECT DISTINCT BV.[Code] ,count(C.[Potential Business Volume]) AS AntalTotal FROM [LF_Drift].[dbo].[x$Business Volume] AS BV INNER JOIN [LF_Drift].[dbo].[Lx$Customer] AS C ON BV.[Code] = C.[Potential Business Volume] INNER JOIN [LF_Drift].[dbo].[x$User Setup] AS US ON C.[Salesperson Code] = us.[User ID] GROUP BY BV.Code, C.[Potential Business Volume] ORDER BY BV.Code GO
Sql laver følgende visning: A 105 B 324 C 981 D 858 E 35821 X 320
Ekstra funktion: Det jeg gerne vil have er, at når BV.[Code] kommer til E skal den tjekke om der står A, B, C eller D i feltet C.[Current Business Volume]. Hvis True så skal den tælles med i sum ellers ikke.
Kanon, så virker det, skal lige teste om output giver det rigtige resultat.
Jeg har så lige et spørgsmål mere. Håber du er frisk på det. Udover at få AntalTotal for hele huset, vil jeg ligeledes gerne have total på afdelingerne.
SQL ser således ud: SELECT DISTINCT BV.[Code] ,count(C.[Potential Business Volume]) AS AntalTotal ,(SELECT COUNT(c1.[Potential Business Volume]) FROM [LF_Drift].[dbo].[Leasing Fyn$Customer] AS C1 INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$User Setup] AS US ON C1.[Salesperson Code] = us.[User ID] WHERE us.[Department]='FORHANDLER' AND C1.[Potential Business Volume]=BV.Code ) AS AntalForhandler ,(SELECT COUNT(c1.[Potential Business Volume]) FROM [LF_Drift].[dbo].[Leasing Fyn$Customer] AS C1 INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$User Setup] AS US ON C1.[Salesperson Code] = us.[User ID] WHERE us.[Department]='LANDBRUG' AND C1.[Potential Business Volume]=BV.Code ) AS AntalLandbrug ,(SELECT COUNT(c1.[Potential Business Volume]) FROM [LF_Drift].[dbo].[Leasing Fyn$Customer] AS C1 INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$User Setup] AS US ON C1.[Salesperson Code] = us.[User ID] WHERE us.[Department]='TRANSPORT' AND C1.[Potential Business Volume]=BV.Code ) AS AntalTransport ,(SELECT COUNT(c1.[Potential Business Volume]) FROM [LF_Drift].[dbo].[Leasing Fyn$Customer] AS C1 INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$User Setup] AS US ON C1.[Salesperson Code] = us.[User ID] WHERE us.[Department]='KREDIT' AND C1.[Potential Business Volume]=BV.Code ) AS AntalKredit FROM [LF_Drift].[dbo].[Leasing Fyn$Business Volume] AS BV INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$Customer] AS C ON BV.[Code] = C.[Potential Business Volume] INNER JOIN [LF_Drift].[dbo].[Leasing Fyn$User Setup] AS US ON C.[Salesperson Code] = us.[User ID] WHERE (BV.[Code] <> 'E NEUTRAL') OR (BV.[Code] = 'E NEUTRAL' AND C.[Current Business Volume] IN('A + 5 MIO', 'B 2 - 5 MIO', 'C 0,5 - 2 MIO', 'D - 0,5 MIO')) GROUP BY BV.Code, C.[Potential Business Volume] ORDER BY BV.Code
Som du kan se har jeg sat din WHERE sætning ind til sidst. Udover det har jeg så sat en SELECT COUNT ind for hver afdeling. På hver afdeling vil jeg også gerne have sat din WHERE sætning ind. Jeg har prøvet mig lidt frem, men det giver lidt kvaler. Håber du også har en løsning på den.
First, I wasnt aware that the SQL gave a total for "hele huset", I just helped answer your question: "Det jeg gerne vil have er, at når BV.[Code] kommer til E skal den tjekke om der står A, B, C eller D i feltet C.[Current Business Volume]. Hvis True så skal den tælles med i sum ellers ikke."
Actually you say "Jeg har denne sql-sætning som laver summering på alle Customer" = ALL CUSTOMERS!!
And not having any knowledge of you tables/relationships it isnt so easy to help you with this extra question :-(
If we assume there is more than one department (afdeling) then I would suggest making another query. Your first query is grouping on BV.Code, C.[Potential Business Volume] and giving a count of these (AntalTotal). To give a count on Department would require you to group on department level which would effect AntalTotal.
Når jeg skal finde total for hver afdeling, så skal jeg vel også have dem grupperet på BV.Code, for det er den gruppering jeg skal bruge. Det skal bruges i et samlet view, så mit output ser ud således:
Code AntalTotal AForhandler ALandbrug ATransport AKredit A 105 25 35 46 0 B 324 44 175 105 0 C 981 36 596 349 0 D 858 11 437 412 0 E 3018 22461 7662 5673 24 X 320 18 127 173 2
Ved ikke om det kommer til at stå under hinanden når jeg trykker opret. Efter jeg har sat din where sætning ind passer antal for afdelingerne selvfølgelig ikke mere. Din where sætning er tjekket op imod vores database og det passer :)
as mention, I have no knowledge of your database so its very difficult to say what you need to group on, but if we assume that the first query is summing all "afdelinger" to give AntalTotal then I would think it very likely that you have to have another field in the group EG: GROUP BY BV.Code, C.Afdeling, C.[Potential Business Volume]
Synes godt om
Ny brugerNybegynder
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.