如何从查询的值中显示领导者的姓名

时间:2012-10-15 03:56:14

标签: sql razor webmatrix

我正在使用WebMatrix构建一个网页,用于查询我们的会计软件并显示当天的顶级销售人员。

我有4名推销员:sam(推销员7)Jared(推销员8)Cha​​rlie(推销员12)Mitchell(推销员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"); 

现在,我想评估四个查询的结果,并显示“Top Salesman: name

我迷失了如何评估查询,然后将销售员编号转换为相应的名称。

编辑:数据库结构:

  • dbo.staff有很多列,但前两个是staffno(主键)和Name
  • dbo.DR_TRANS再次包含许多列,但我们正在使用的两个列是subtotalsalesno - 两者都不是键。此表有一个滚动键,即发票号。
  • Salesno派生自staffno(应用程序从登录详细信息中传递。)

2 个答案:

答案 0 :(得分: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将强制它仅返回第一行。

答案 1 :(得分:1)

下面,(我认为)指向您正在寻找的查询。这两个表都是使用INNER JOIN通过链接DR_TRANS.Salesno = Staff.StaffNo加入的。它会列出所有有记录且Staff的{​​{1}}人。无需为subtotal > 0添加条件,因为它们根据其总交易按降序排列。

staffNo