1

WebMatrix を使用して、会計ソフトウェアにクエリを実行し、その日のトップセールスマンを表示する Web ページを作成しています。

私には 4 人のセールスマンがいます: サム (セールスマン 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"); 

ここで、4 つのクエリの結果を評価し、「トップセールスマン:名前」を表示したいと考えています。

クエリを評価してセールスマン番号を対応する名前に変換する方法がわかりません。

編集: データベース構造:

  • dbo.staff には多くの列がありますが、最初の 2 つはstaffno(主キー) とName.
  • dbo.DR_TRANS にも多くの列が含まれていますが、使用している 2 つはsubtotalandsalesnoで、どちらもキーではありません。このテーブルには、請求書番号であるスクロール キーがあります。
  • Salesnoから派生しstaffnoます (ログインの詳細からアプリによって渡されます)。
4

2 に答える 2

1

以下、(私は)あなたが探しているクエリを私たちに教えてください。両方のテーブルは、リンク列をINNER JOIN介してを使用して結合されます。それは記録を持っているすべての人と誰をリストします。トランザクションの合計に基づいて降順でリストされているため、条件を追加する必要はありません。DR_TRANS.Salesno = Staff.StaffNoStaffsubtotal > 0staffNo

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 に答える
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

結果は、小計が最大のセールスマンの名前になります。はTop 1、最初の行のみを返すように強制します。

于 2012-10-15T09:03:33.580 に答える