0

Ich führe eine Multiplikation aus, die zwei Spalten aus zwei verschiedenen Tabellen erfordert, und dann die Ergebnisse in einer separaten Abfrage verwendet. Ich denke, dies als eine Ansicht möglich wäre:SQL Tabellen als Parameter übergeben?

SELECT SUM(A.salesAmt * B.sales%) AS rebateAmount 

Aber würde eine Tabellenwertfunktion möglich sein, hier, oder besser geeignet? Könnten beide Tabellen A und B als Parameter übergeben werden, um die endgültige rebateAmount als Summe zurückzugeben?

  • Tabelle A enthält: salesID, salesAmt
  • Tabelle B enthält: salesID, sales%

möchte den TVF die Summe von (salesAmt * sales%) as rebateAmount wenn möglich zurückzukehren? Dies ist SQL Server 2014.

Vielen Dank im Voraus.

Antwort

0

Das Übergeben einer Tabelle als Parameter scheint Ihr Problem nicht zu lösen.

Stattdessen scheint es eine einfachere Art und Weise zu sein: - erstellen temporäre Tabellen Tabelle #a erstellen (salesID int, salesAmt dezimal (15,2)) Tabelle #B erstellen (salesID int, salesPerc dezimal (5, 2))

-- insert data 
Insert into #a 
Select 1, 2567.34 
Union 
Select 2, 335.57 
Union 
Select 3, 95.35 
Union 
Select 4, 303.83 
Union 
Select 5, 743.66 

-- insert data 
Insert into #b 
Select 1, 4.5 
Union 
Select 2, 10.0 
Union 
Select 3, 2.5 
Union 
Select 4, 6.0 
Union 
Select 5, 20.0 

-- to get the data of individual columns + the multiple of the salesAmt & salesPerc 
Select a.*, b.salesPerc, convert(decimal(15,2), a.salesAmt * b.salesPerc)      as Mult from #a a inner join #b b on a.salesID = b.salesID 

-- to get the sum of the multiple of the salesAmt & salesPerc 
Select Sum (convert(decimal(15,2), a.salesAmt * b.salesPerc)) as SumOfMult from #a a inner join #b b on a.salesID = b.salesID 
Verwandte Themen