0

例:id = 1の場合の金額の合計が、id <> 1の場合の金額の合計と、IDおよび差と等しくない数が必要です。
テーブル(この場合はビュー)は次のようになります。

NUMBER   AMOUNT   ID

0001     500       1
0001     500       2
0002     400       3
0003     299       1
0003     300       3
0003     300       3

これについてあなたの助けに感謝します。

4

2 に答える 2

0

このクエリを使用すると、IDが1に等しく、IDが1に等しくない、数値でグループ化された金額の合計を取得できます。

SELECT NUMBER
, SUM(CASE WHEN ID = 1 THEN AMOUNT ELSE 0 END) AS Equals1
, SUM(CASE WHEN ID <> 1 THEN AMOUNT ELSE 0 END) AS NotEquals1
FROM DataTable
GROUP BY NUMBER 

これが予想される場合は、次のクエリを使用して、数値でグループ化された差額を取得します。

SELECT NUMBER, (Equals1 - NotEquals1) AS DifferenceAmount
FROM
(
    SELECT NUMBER
    , SUM(CASE WHEN ID = 1 THEN AMOUNT ELSE 0 END) AS Equals1
    , SUM(CASE WHEN ID <> 1 THEN AMOUNT ELSE 0 END) AS NotEquals1
    FROM DataTable
    GROUP BY NUMBER
) AS GroupedTable
WHERE Equals1 <> NotEquals1
于 2012-10-16T11:39:24.617 に答える
0
SELECT
    MyView.Number,
    MyView.Amount - D.OverOneTotal AS Difference
FROM
    MyView
    LEFT JOIN 
    (SELECT
        Number,
        SUM(Amount) OverOneTotal
    FROM
        MyView
    WHERE
        ID > 1
    GROUP BY 
        Number) D ON MyView.Number = D.Number
WHERE
    MyView.ID = 1
    AND MyView.Amount <> D.OverOneTotal 
于 2012-10-16T11:45:27.433 に答える