2017-04-08 9 views
0

クエリでSUM関数の数を減らすにはどうすればよいですか?クエリ内のSUM関数の繰り返し回数を減らす

SELECT P_NAME "Product name", (SUM(case when PR = 1 then QUANTITY end) - 
SUM(case when PR = 2 then QUANTITY end)) "End balance", 
CAST((SUM(case when PR = 1 then QUANTITY*PRICE end) - SUM(case when PR = 2 then 
QUANTITY*PRICE end)) as decimal(13,2)) "End balance" FROM RPOD, DMS, DMZ 
WHERE RPOD.KTOV=DMS.KTOV AND DMZ.NDM=DMS.DMZ_FK 
GROUP BY P_NAME 
ORDER BY P_NAME; 
+0

私は、合計を減らすとロジックが変わると思いますが、私が変更するのは使用エイリアスとモダンスタイルの結合を使用することだけです – TheGameiswar

答えて

2

あなたがそれらを組み合わせることができます。SUM()秒程度

SELECT P_NAME as "Product name", 
     SUM(case when PR = 1 then QUANTITY 
       when PR = 2 then - QUANTITY 
      end) as "End balance", 
     SUM(case when PR = 1 then QUANTITY * PRICE 
       when PR = 2 then - QUANTITY * PRICE 
      end) as "End balance/price", 
FROM RPOD JOIN 
    DMS 
    ON RPOD.KTOV = DMS.KTOV JOIN 
    DMZ 
    ON DMZ.NDM = DMS.DMZ_FK 
GROUP BY P_NAME 
ORDER BY P_NAME; 

はるかに重要美学は、適切な、明示的なJOIN構文を使用して学んでいます。 の句は、JOIN節でカンマを使用してください。また、結果セットの2つの列に同じ名前を付けるべきではありません。

関連する問題