2012-10-15 31 views
1

我正在使用WebMatrix構建查詢我們會計軟件的網頁並顯示當天的首席推銷員。如何根據查詢的值顯示領導者姓名

我有4個推銷員:SAM(推銷員7)賈裏德(業務員8)查理(業務員12)米切爾(業務員17)

查詢代碼:

var ssjb = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.DR_TRANS where Transdate = 41195 and SALESNO = 7 and subtotal >0"); 
var sjdp = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.DR_TRANS where Transdate = 41195 and SALESNO = 8 and subtotal >0"); 
var scjb = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.DR_TRANS where Transdate = 41195 and SALESNO = 12 and subtotal >0");  
var smms = db.QueryValue("SELECT SUM(SUBTOTAL) FROM dbo.DR_TRANS where Transdate = 41195 and SALESNO = 17 and subtotal >0"); 

現在,我要評估四個查詢結果,並顯示「頂部推銷員:名稱

我失去了如何評估查詢,然後把推銷員號碼變成相應的名稱。

編輯:數據庫結構:

  • dbo.staff擁有大量的列但前兩個是staffno(主密鑰)和Name
  • dbo.DR_TRANS包含很多列,但我們正在使用的兩個是subtotalsalesno - 兩者都不是鍵。該表具有滾動鍵,即發票號碼。
  • Salesnostaffno衍生(通過從登錄信息的應用程序通過。)
+0

此外,有人可以告訴我一個技巧,使日期代碼自我更新?我的數據庫將它存儲爲像「41195」這樣的5位數字代碼。如何將我所有查詢中的41195替換爲將自動更新的「今日日期」值? – Bevan

+0

好得多,如果你可以發佈你的表格的結構。我想你至少有兩張桌子,'DR_TRANS'和包含推銷員名字的表 –

+0

@JohnWoo我可以查詢名字的職員表,我沒有嘗試過。主要是因爲我沒有足夠的信心來嘗試鏈接表查詢。 DR_TRANS只有一個銷售員號碼,叫'salesno'。 – Bevan

回答

1

下面,(我認爲是)我們查詢您正在尋找的。這兩個表格使用INNER JOIN通過它們的鏈接DR_TRANS.Salesno = Staff.StaffNo加入。它會列出所有有記錄的Staff和哪個subtotal > 0。無需爲staffNo添加條件,因爲它們按其總交易的降序排列。

SELECT b.Name, SUM(subtotal) totalSUM 
FROM DR_TRANS a 
     INNER JOIN Staff b 
      ON a.Salesno = b.Staffno 
WHERE a.TransDATe = 41195 AND 
     a.subtotal > 0 
GROUP BY b.Name 
ORDER BY totalSUM DESC 
+0

謝謝約翰,但它拋出編譯錯誤,抱怨「)預期」無論我嘗試什麼。它必須全部在一條線上才能工作嗎?剃刀似乎不同於你的帖子。 – Bevan

+0

@Bevan如果你希望一個字符串在剃刀語法中跨越多行,你必須用@開頭。用'嘗試VAR TSM = db.Query(@「SELECT b.Name,SUM(小計)totalSUM FROM DR_TRANS一個 INNER JOIN工作人員b ON a.Salesno = b.Staffno WHERE a.TransDate = 41195 AND 一.subtotal> 0 GROUP BY b.Name ORDER BY totalSUM DESC「);' – GmG

+0

工程就像一個魅力。 – Bevan

1

這是你需要什麼?

SELECT TOP 1 staff.Name, SUM(SubTotal) 
FROM Staff 
INNER JOIN DR_TRANS on Staff.StaffNO = DR_TRANS.SalesNO 
WHERE DR_TRANS.Transdate = 41195 and DR_TRANS.SALESNO IN (7,8,12,17) and DR_TRANS.subtotal > 0 
GROUP BY staff.Name 
ORDER BY SUM(SubTotal) DESC 

結果將是具有最大subTotal的推銷員的名稱。 Top 1將強制它僅返回第一行。

+0

我直接粘貼它,但它會引發編譯錯誤。 – Bevan

+0

請給我看你粘貼的代碼... – Blachshma

+0

'var tsm = db.Query(SELECT TOP 1 staff.Name,SUM(SubTotal) FROM Staff INNER JOIN DR_TRANS on Staff.StaffNO = DR_TRANS.SalesNO WHERE DR_TRANS。TRANSdate = 41195和DR_TRANS.SALESNO IN(7,8,12,17)和DR_TRANS.subtotal> 0 GROUP BY staff.Name ORDER BY SUM(SubTotal)DESC);' – Bevan