Query για παραγωγή δεδομένων σε pie chart

Συζητήσεις για τον Microsoft SQL Server

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Query για παραγωγή δεδομένων σε pie chart

Δημοσίευση από Khronos » 31 Ιούλ 2012 16:14

Καταρχήν να πω ότι θα το χρησιμοποιήσω σε stored procedure.

Αυτό που θέλω να κάνω είναι να παίρνω μια λίστα πελατών με το profit τους, δίνοντας σαν παραμέτρους:
a. πόσους πελάτες θέλω να φέρω πχ. (top 10)
b. το id ενός συγκεκριμένου πελάτη

Αν δώσω νούμερο πελατών, εκτός απο πχ. τους top 10 θέλω να φέρνω άλλη μια γραμμή με το σύνολο όλων των υπόλοιπων και αν δώσω id πελάτη να μην φέρνω αυτή την extra γραμμή (αυτό είναι το πρόβλημα με το παρακάτω query).

Αυτό που έχω κάνει μέχρι τώρα:

Κώδικας: Επιλογή όλων

ALTER PROCEDURE [dbo].[spTotals_Per_Customer] 
	-- Add the parameters for the stored procedure here
	@CustomerID int = null,
	@Count int = null
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
    -- Insert statements for procedure here
select
	Customer_Count
	,Total_Net
	,Total_Sale
	,Profit
	,Customer_Id
	,Customer_Name
from
(
	select 
		ROW_NUMBER()OVER(Order By Profit DESC)As Customer_Count
		,Total_Net
		,Total_Sale
		,Profit
		,Customer_Id
		,Customer_Name
		
		from Data
	
  ) final_totals
  
  where &#40;Customer_Count <= @Count or @Count is null&#41;
  
  union all
  
  select
	0 as Customer_Count
	,isnull&#40;sum&#40;Total_Net&#41;, 0&#41;
	,isnull&#40;sum&#40;Total_Sale&#41;, 0&#41;
	,isnull&#40;sum&#40;Profit&#41;, 0&#41;
	,0 as Customer_Id
	,'Other' as Customer_Name
from
&#40;
	select 
		ROW_NUMBER&#40;&#41;OVER&#40;Order By Profit DESC&#41;As Customer_Count
		,Total_Net
		,Total_Sale
		,Profit
		,Customer_Id
		,Customer_Name
		
		from Data
  &#41; final_totals2
  
  where &#40;Customer_Count > @Count and @CustomerID is null&#41;
  
  
END
Το έχω αλλάξει για να καταλάβετε την ιδέα. Σίγουρα δεν είναι το πιο βέλτιστο γι'αυτό και θέλω να ακούσω άλλες προτάσεις.

Απάντηση

Επιστροφή στο “MS SQL Server”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες