【解決方法】サブクエリで null 以外の値または 0 以外の値のみを選択する

プログラミングQA


私はこのテーブルを持っています:
テーブル名:セール

-----------------------------------------<br />
    category    |  amount    |   currency   |<br />
    -----------------------------------------<br />
    cat1        |  10,000    |   USD        |<br />
    cat2        |  5,000     |   EUR        |<br />
    cat3        |  15,000    |   SAR        |<br />
    cat2        |  30,000    |   USD        |<br />
    cat1        |  45,000    |   SAR        |<br />
    cat3        |  7,000     |   EUR        |<br />
    cat2        |  3,000     |   EUR        |

この結果を返すクエリ (SQL サーバー) が必要です。

-------------------------------------------------<br />
category |  Total_USD |  Total_EUR |  Total_SAR |<br />
-------------------------------------------------<br />
cat1     |  10,000    |  0         |  45,000    |<br />
cat2     |  30,000    |  8,000     |  0         |<br />
cat3     |  0         |  7,000     |  15,000    |

私が試したこと:

私はこれを試しました:

SQL
SELECT  S.[CategoryID]
       ,S.[CategoryName]

       ,(SELECT ISNULL(SUM([Amount]),0)
           FROM SALE
          WHERE [Currency] = 'USD'
            AND SALE.[CategoryID] = S.[CategoryID]) AS 'Total_USD'
            
       ,(SELECT ISNULL(SUM([Amount]),0) 
           FROM SALE
          WHERE [Currency] = 'ERU'
            AND SALE.[CategoryID] = S.[CategoryID]) AS 'Total_ERU'
            
       ,(SELECT ISNULL(SUM([Amount]),0) 
           FROM SALE
          WHERE [Currency] = 'SAR'
            AND SALE.[CategoryID] = s.[CategoryID]) AS 'Total_SAR'
        
        FROM Sale AS S
        GROUP BY S.[CategoryID],S.[CategoryName]

この結果を示すクエリ:

-------------------------------------------------<br />
category |  Total_USD |  Total_EUR |  Total_SAR |<br />
-------------------------------------------------<br />
cat1     |  10,000    |  0         |  45,000    |<br />
cat2     |  30,000    |  8,000     |  0         |<br />
cat3     |  0         |  7,000     |  15,000    |<br />
cat4     |  0         |  0         |  0         |

私の質問は、上記の (cat4) のように、3 つの列がゼロの場合に (0) の値を回避する方法です。

解決策 1

1) 叫ばないで! すべての大文字を使用することは、インターネット上でシャウトと見なされ、失礼です。 適切なキーボードがあるので、適切な大文字と小文字を使用してください。

2) なぜそのデータがそれらの結果を与えるべきなのか、そしてあなたが望むものを達成するための「一般的なルール」が何であるかは少しでも明確ではありません – そしてそれがなければ、誰も本当にあなたを助けることはできません.

したがって、ルールを理解することから始めて、解決策を探す前に徹底的にテストしてください。
まず、GROUP BY 句をサブクエリとして見て、必要になると思われる集計データを取得します。

コメント

タイトルとURLをコピーしました