0

だから私は以前にこのような質問をしました、そして私はこの次の問題に答えを入力するために答えを理解していなかったと思います(答えはうまくいきましたが)

簡単なクエリ。私は従業員、日付、合計時間を引っ張っています。タイムカードプログラムPER従業員から。私が探しているのは、totalhrs列の合計だけでなく、送信されたすべてのタイムカードを表示することです。だから私が今使っているコード

 SELECT date,totalhrs,SUM(totalhrs) 
 FROM tcardsubmit 
 WHERE employee= 'employee name' 
 ORDER BY date

このコードは次のように表示されます

|EMPLOYEE | DATE        | TOTALHRS | SUM(TOTALHRS)
| myname  | myfirstdate |     5    |     10

表示したいのは、特定の従業員が入力したすべてのタイムカードです。1つのリンクだけではありません。したがって、「myname」では、SUMが実際にその週に提出された10時間に等しい3つのタイムカードがあります。合計は数学に有効です。従業員が入力したすべてのタイムカードを表示することができないようです。これが私がそれをどのように見せたいかです

|EMPLOYEE | DATE         | TOTALHRS | SUM(TOTALHRS)
| myname  | myfirstdate  |     5    |     10
| myname  | myseconddate |     4    |     10
| myname  | mythirddate  |     1    |     10
4

3 に答える 3

2

これをテストして、これが機能するかどうかを確認します。

SELECT 
    date, 
    totalhrs, 
    (SELECT SUM(b.totalhrs) FROM tcardsubmit b WHERE b.employee = a.employee) AS totalhrs_sum 
FROM 
    tcardsubmit a 
WHERE 
    employee = 'employee name' 
ORDER BY 
    date 

説明subselectのwhere句の場合: sub select WHERE句では、メインのselect従業員(b.employee = a.employee)と同じ従業員を持つレコードのみを取得するようにチェックしているため、SUM(b.totalhrs)は次のようになります。あなたが彼の記録を取得している従業員の記録の合計だけである。メインセレクトではFROMtcardsubmitaと言うので、メインtcardsubmit aに名前を付け、サブセレクトでは同じテーブル名とフィールド名を使用することによる競合を避けるためにテーブルbに名前を付けます。

于 2012-09-17T13:41:14.037 に答える
0

この場合、プルバックする通常の行に加えて、サブクエリを使用して合計時間を取得する必要があります。

SELECT 
    date,
    totalhrs,
    (
    select 
        sum(a.totalhrs) 
    from 
        tcardsubmit a 
    where 
        a.employee=employee
    ) as TotalHrs
FROM 
    tcardsubmit 
WHERE 
    employee= 'employee name' 
ORDER BY 
    date
于 2012-09-17T13:39:19.950 に答える
0
SELECT tcardsubmit.employee, date,tcardsubmit.totalhrs, SumTotal.totalhrs
FROM tcardsubmit 
WHERE employee= 'employee name' 
inner join ( Select Employee, Sum(totalhrs) as TotalHrs From tcardSubmit Group By Employee) as sumTotal
On Sumtotal.employee = tcardsubmit.employee
ORDER BY date

集計(最小、最大、合計など)と詳細が必要な場合は、結合が最適です。

PS同じ名前の従業員が2人いる場合はどうしますか?

于 2012-09-17T13:47:16.190 に答える