0

以下のテーブルから値を取得するクエリが必要です

ここに画像の説明を入力

ロケーション 1 の合計 (合計日数) がロケーション 2 の合計 (合計日数) より大きいプロジェクトの総数をカウントするクエリが必要です。

私を助けてください

4

3 に答える 3

2

これを試して:

DECLARE @a TABLE (
    projectid INT,
    totalday INT, 
    location INT
)

INSERT @a (projectid, totalday, location)
VALUES  
    (12,         20,        2),
    (12,         10,        1),
    (13,         2,         1)

;WITH CTE AS (
    SELECT projectid, SUM(totalday) AS totalday, location FROM @a GROUP BY projectid, location 
)
SELECT COUNT(*)
FROM CTE AS a1
INNER JOIN CTE AS a2
    ON a1.projectid = a2.projectid
WHERE 
    a1.location = 1 AND a2.location = 2
    AND a1.totalday > a2.totalday
于 2013-05-16T05:36:24.000 に答える
2

データに一意のキー制約がないことを前提として、最初に場所ごとのプロジェクトごとの合計日数を CTE で合計しました。データが一意の場合は、この手順をスキップできます。

WITH  ProjectDays AS
(
    SELECT projectid, location, SUM(totalday) AS TotalDays
    FROM Project p
    GROUP BY projectid, location
)
SELECT p1.projectId as ProjectWithMoreTotalDaysInLoc1
FROM ProjectDays p1 
    INNER JOIN ProjectDays p2
    ON p1.projectId = p2.projectId
WHERE 
    p1.location = 1 and p2.location = 2
    and p1.TotalDays > p2.TotalDays;

(プロジェクト自体のリストではなく) プロジェクトの数を単純に取得するには、最終的なものを次のように切り替えますSELECT p1.projectIdSELECT COUNT(*)

ここでフィドル

于 2013-05-16T05:44:54.860 に答える