2
SELECT ORIGIN_NAME, SUM(NET_WEIGHT),
CASE WHEN ORIGIN_NAME IS NULL THEN 'Basket' ELSE ORIGIN_NAME END AS ORIGIN
FROM VW_PURCHASE_ORDER
GROUP BY ORIGIN_NAME

円グラフで使用する上記のクエリがあります。

ただし、このクエリが取得する情報には重複するレコードがあるため、上記のクエリを実行する必要があります(ただし、句を終了するための適切な式がないため、WHEREが間違っていると確信しています)

WHERE DISTINCT PO_PREFIX||PO_NUMBER||PO_SUFFIX

重複するレコードの重みを二重にカウントしないように

サブクエリを試しましたが、現在SQLプログラミングの初心者であり、正しく実行できなかったと思います(SELECT DISTINCT列をサブクエリとして使用できますか?)。

4

3 に答える 3

5

操作をステップに分割しましょう、

手順1.すべての個別の行を検索します。

SELECT DISTINCT 
   PO_PREFIX, PO_NUMBER, PO_SUFFIX, NET_WEIGHT,
   COALESCE(ORIGIN_NAME, 'Basket') AS ORIGIN
FROM 
   VW_PURCHASE_ORDER ;

ステップ2:origin上記を派生テーブル(名前付きtmp)として使用して、でグループ化します。

SELECT
   ORIGIN, SUM(NET_WEIGHT) AS SUM_NET_WEIGHT
FROM
   ( SELECT DISTINCT 
        PO_PREFIX, PO_NUMBER, PO_SUFFIX, NET_WEIGHT,
        COALESCE(ORIGIN_NAME, 'Basket') AS ORIGIN
     FROM 
        VW_PURCHASE_ORDER 
   ) tmp
GROUP BY
   ORIGIN ;
于 2013-01-11T09:32:37.550 に答える
0

これはあなたにいくらか役立つと思います

SELECT TOP 1 ORIGIN_NAME, SUM(NET_WEIGHT),
CASE WHEN ORIGIN_NAME IS NULL THEN 'Basket' ELSE ORIGIN_NAME END AS ORIGIN
FROM VW_PURCHASE_ORDER
GROUP BY ORIGIN_NAME
于 2013-01-11T09:12:46.157 に答える
0

最初にすべての個別の行を選択してから、グループを作成することが必要だと思います。したがって、このクエリは必要なことを実行する可能性があります。

SELECT ORIGIN, SUM(NET_WEIGHT)
FROM (
SELECT DISTINCT 
* ,
CASE WHEN ORIGIN_NAME IS NULL THEN 'Basket' ELSE ORIGIN_NAME END AS ORIGIN
FROM VW_PURCHASE_ORDER) AS QUERY
GROUP BY ORIGIN
于 2013-01-11T09:22:21.207 に答える