2016-11-15 3 views
0

は、私はこのようなSQLクエリを持って結果を集計することができ、私はに結果を必要とするしかしはどのようにして、サブクエリに基づいたデータ

LaborHrs  Dept 
90.5000000  office 
1033.2500000 retail 
522.2500000  retail 
217.5000000  misc 
1145.5000000 misc 
40.0000000  retail 

部門名が同じ場合は集計してください。たとえば、「小売」と「その他」のすべての労働時間の合計が同じ列にある必要があります。私はDeptによってグループ化を試みましたが、その列名を認識しませんでした。

+0

GROUP作品すでにFROM句で利用できるので、それに参加する必要があります。 – DVT

答えて

3

私はあなたの質問を理解した内容に基づいてクエリを書き直したが、私はこの部分のかなり怪しいです:

DTM BETWEEN 'datetime1' AND 'datetime2' 

私はそれはあなたがに置き換えますdatetime型の変数または数値であることを前提としています。 そのような場合は、私はここに答えがあると思います。

SELECT (SUM(DURATIONSECS)/3600.00) AS LaborHrs, 
    , l1.LABORLEV2 AS Dept 
FROM Table1 t1 
    JOIN LABOR l1 ON l1 ON l1.LABORID=t1.LABORID 
WHERE DTM BETWEEN 'datetime1' AND 'datetime2' AND l1.LABORLEV1='100' 
    AND t1.PAYCODEID='1' 
Group BY t1.LABORID, l1.LABORLEV2 
+0

クエリの修正。 – DVT

+0

申し訳ありませんが、私はdatetime1とdatetime2にdatetime値を変更しました。 – user3839756

+0

ありがとう、私が変更する必要があったのは、Group BY句のl1.LABORLEV2からPAYCODEIDまででした – user3839756

1

一部の列をグループ化する場合は、その列を副選択にすることはできないため、JOINSを使用して問合せを再作成する必要があります。私はあなたのクエリのunderstantものによって

、あなたがテーブルTabl1、労働に参加し、WHERE文のシングルにあなたの条件を移動することができ、このような何か:あなたが選んだ列がある場合にのみBY

SELECT 
    l.LABORLEV2 AS Dept, 
    (SUM(t1.DURATIONSECS)/3600.00) AS LaborHrs 
FROM Table1 t 
INNER JOIN LABOR l ON t.LABORID=l.LABORID 
WHERE 
    l.LABORLEV1='100' AND 
    t1.PAYCODEID='1' AND 
    t1.DTM BETWEEN 'datetime1' AND 'datetime2' 
GROUP BY l.LABORLEV2 
関連する問題