3

たとえば、次の表があります。

date | id | num
01-01 | a | 10
01-02 | a | 14
01-02 | b | 2
01-03 | a | 19
01-03 | b | 5
01-04 | a | 13

から減算numしたい、つまり、結果は次のようになります。ba

01-01 | 10    //10
01-02 | 12    //14-2
01-03 | 14    //19-5
01-04 | 13    //13

次のSQLクエリを試しましたが、のレコードがない場合はbdateを返し\Nます。

SELECT tba.date, numall-numout
FROM (
    SELECT date, num AS numall
    FROM tb
    WHERE id = "a"
) tba
LEFT JOIN (
    SELECT date, num AS numout
    FROM tb
    WHERE id = "b"
) tbb
ON tba.date = tbb.date
4

2 に答える 2

7

一致するBがない場合、左結合はnullを返します。これは、実行していることを意味します。

numall - NULL

その結果、NULLになります。これを回避するには、あなたがしなければならないでしょう

numall - COALESCE(numout, 0)

存在しない「b」の日付に0を強制します。

于 2012-04-12T18:07:58.407 に答える
0

使用するSELECT tba.date, numall-ISNULL(numout,0)

于 2012-04-12T18:08:55.597 に答える