2016-03-24 10 views
-4

Ich versuche, über den Durchschnitt der Füllrate für Wert Spalte, zu berechnen, aber nur wenn seine Beschreibung nicht null ist, wenn Beschreibung und Wert null ist, sollte es von der Durchschnittsberechnung ausgeschlossen werden.Durchschnittliche Berechnung in SQL Server 2008

DECLARE @MASTER TABLE 
(
    PRODUCT VARCHAR (50), 
    Desc1  VARCHAR (50), 
    Desc1Value VARCHAR (50),  
    Desc2  VARCHAR (50), 
    Desc2Value VARCHAR (50), 
    Desc3  VARCHAR (50), 
    Desc3Value VARCHAR (50), 
    Desc4  VARCHAR (50), 
    Desc4Value VARCHAR (50), 
    Desc5  VARCHAR (50), 
    Desc5Value VARCHAR (50), 
    Desc6  VARCHAR (50), 
    Desc6Value VARCHAR (50) 
) 

INSERT @MASTER 
    SELECT 
     'AMPLIFIER', 'Color', 'Black', 'Material', 
     'Blended TPO', 'Edge Type', 'Raised', 
     'Surface Type', 'Non-Skid', 'Coverage', NULL, 
     NULL, NULL 

    UNION ALL 

    SELECT 
     'AMPLIFIER', 'Color', 'Black', 'Material', 'Blended TPO', 
     'Edge Type', 'Raised', 'Surface Type', 'Non-Skid', 
     'Coverage', NULL, NULL, NULL 

    UNION ALL 

    SELECT 
     'RECTIFIER', 'Style', 'Film Kit', 'Color', 'Clear', 
     'Material', 'Urethane', 'Quantity', NULL, NULL, NULL, 
     NULL, NULL 

    UNION ALL 

    SELECT 
     'RECTIFIER', 'Style', 'Film Kit', 'Color', 'Clear', 
     'Material', 'Urethane', 'Quantity', NULL, NULL, NULL, 
     NULL, NULL 

    UNION ALL 

    SELECT 
     'Diode', 'Rating', '6 Ampere', 'Quantity', 'Pack Of 12',  
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL 

Erwartete Ausgabe:

Overall_fillrate:- 68.33% 

Kann jemand bitte helfen Sie mir, ich versuchte mehrere Art und Weise konnte es aber nicht erreichen.

Danke,

+4

Und wie erhalten Sie '68,33%' von diesen Daten? (Auch Ihre Datenbankstruktur ist schrecklich! Warum? Nur etwas so einfaches wie "finde mich alle Produkte, die ich habe, die schwarz gefärbt sind" ist schwer zu schreiben) – Jamiec

+0

Dieser Beitrag macht für mich keinen Sinn. –

+0

Vereinfachen Sie Beispiel, haben Sie weniger Spalten. – jarlh

Antwort

1

gefällt das?

select (COUNT(CASE WHEN Desc1 is not null then Desc1Value end) 
    + COUNT(CASE WHEN Desc2 is not null then Desc2Value end) 
    + COUNT(CASE WHEN Desc3 is not null then Desc3Value end) 
    + COUNT(CASE WHEN Desc4 is not null then Desc4Value end) 
    + COUNT(CASE WHEN Desc5 is not null then Desc5Value end) 
    + COUNT(CASE WHEN Desc6 is not null then Desc6Value end)) 
    * 100.0 
    /(6 * COUNT(*)) 
from @MASTER