3

私はSQLServer2008を使用しています。顧客の売上があり、顧客が前年に購入したものと比較して、成長を計算したいと思います。それはすべて正常に機能しますが、顧客が1か月間ネガティブになるとすぐに、Target&Growthの間違ったデータが返されます。

Customer     SalesLastYearMonth      SalesThisYearMonth      Target     Growth
------------------------------------------------------------------------------
abcd         -1                      15                      ????       ???

コード:

SELECT
    Customer,
    CASE 
        WHEN SalesThisYearMonth IS NULL THEN (SalesLastYearMonth * -1)
        WHEN SalesLastYearMonth IS NULL THEN SalesThisYearMonth 
        ELSE SalesThisYearMonth -  SalesLastYearMonth END as Target,
    CASE 
        WHEN SalesThisYearMonth IS NULL THEN -1 
        WHEN SalesLastYearMonth IS NULL THEN 1 
        WHEN SalesThisYearMonth = 0 then -1
        WHEN SalesLastYearMonth = 0 then 1
        ELSE ( SalesThisYearMonth - SalesLastYearMonth) / SalesLastYearMonth END AS Growth
4

3 に答える 3

0

TARGET=16、GROWTH=16 が必要だとすると、次のようになります。

SELECT
    Customer,
    CASE 
        WHEN SalesThisYearMonth IS NULL THEN (SalesLastYearMonth * -1)
        WHEN SalesLastYearMonth IS NULL THEN SalesThisYearMonth 
        ELSE SalesThisYearMonth -  SalesLastYearMonth END as Target,
    CASE 
        WHEN SalesThisYearMonth IS NULL THEN -1 
        WHEN SalesLastYearMonth IS NULL THEN 1 
        WHEN SalesThisYearMonth = 0 then -1
        WHEN SalesLastYearMonth = 0 then 1
        ELSE ( SalesThisYearMonth - SalesLastYearMonth) / ABS(SalesLastYearMonth) END AS Growth

ただし、GROWTH についてはよくわかりません。SalesLastYearMonth で割っている理由がわかりません。上記の場合、これは機能しますが、SalesLastYearMonth が -4 の場合、4 で割りますか?

于 2013-02-19T07:28:05.967 に答える
0

あなたは負の数で割っています:

SalesLastYearMonth = -1

それを確認するか、絶対値を返す必要があります。

于 2013-02-19T07:28:47.260 に答える