1

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

我有 4 个推销员:sam(推销员 7) Jared(推销员 8) Charlie(推销员 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(由应用程序从登录详细信息传递。)
4

2 回答 2

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将迫使它只返回第一行。

于 2012-10-15T09:03:33.580 回答
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
于 2012-10-15T09:04:50.083 回答