Ich habe einige SQL, die ich denke, ich könnte mit einer Funktion aufräumen, aber bin nicht erfahren in der Erstellung von ihnen.Create Funktion zur Auswahl des korrekten Währungsfelds aus einer Tabelle
Mein Code hat viele Abschnitte, die alle wie folgt aussehen:
ISNULL(SUM(Case
when @Currency = 'AED' And Flag = 'Current' then BILLED_AED
when @Currency = 'AUD' And Flag = 'Current' then BILLED_AUD
when @Currency = 'BRL' And Flag = 'Current' then BILLED_BRL
when @Currency = 'CAD' And Flag = 'Current' then BILLED_CAD
when @Currency = 'CNY' And Flag = 'Current' then BILLED_CNY
when @Currency = 'EUR' And Flag = 'Current' then BILLED_EUR
when @Currency = 'GBP' And Flag = 'Current' then BILLED_GBP
when @Currency = 'HKD' And Flag = 'Current' then BILLED_HKD
when @Currency = 'INR' And Flag = 'Current' then BILLED_INR
when @Currency = 'LYD' And Flag = 'Current' then BILLED_LYD
when @Currency = 'QAR' And Flag = 'Current' then BILLED_QAR
when @Currency = 'SAR' And Flag = 'Current' then BILLED_SAR
when @Currency = 'SGD' And Flag = 'Current' then BILLED_SGD
when @Currency = 'USD' And Flag = 'Current' then BILLED_USD
when @Currency = 'VEF' And Flag = 'Current' then BILLED_VEF
when @Currency = 'ZAR' And Flag = 'Current' then BILLED_ZAR
End),0) As Total_Billed
Das ist mein Code massiv lang macht und ich bin der Hoffnung, zu verkürzen. Kann ich eine Funktion erstellen, in der ich den Parameter @Currency zur Verfügung stelle (den der Benutzer beim Ausführen des Berichts ausgewählt hat) und den richtigen BILLED-Wert erhält (z. B.)? Also würde ich in die Funktion die @Currency, @Flag und @Field eingeben - im obigen Beispiel "BILLED_" wird der richtige Währungscode angehängt.
Ich hoffe, das macht Sinn - vielen Dank im Voraus für jede Hilfe.
Markieren Sie die von Ihnen verwendeten dbms. (Dieser Code ist nicht ANSI SQL.) – jarlh
Dies * schreit *, dass Sie eine Spalte "Currency" in Ihrer Tabelle und eine andere mit dem 'Bill'-Wert haben sollten, anstatt einer Spalte pro Währung. Oder nur eine Tabelle mit der Währungsumrechnung – Lamak
Warum erstellen Sie keine Tabelle und treten Sie ihr bei ..? – scaisEdge