2016-10-11 17 views
0

同じテーブルの2種類のデータをビューに収めようとしています。別の別名で同じテーブルに結合を追加しようとしましたが、いくつかのnull値が発生しました。異なるテーブルの同じデータが同じビューにある

可能であれば、データテーブルを1行にします。私はこれも共用体演算子で行うことができますが、それは複数の行を引き起こすことを知っています。ここで

は私の選択

SELECT 
COUNT(PO.OrderID) AS MerkezOnaySiparisAdet, SUM(PO.TotalPromotionPrice) AS MerkezOnayToplamSatis, 
COUNT(PO2.OrderID) AS DepoOnaySiparişAdet, SUM(PO2.TotalPromotionPrice) AS DepoOnayToplamSatis 
FROM PrmOrder PO 

LEFT JOIN PrmOrder PO2 ON PO.OrderID = PO2.OrderId AND (PO2.OrderStatusID != 1 AND PO2.IsOrderApproved = 1 AND PO2.IsInventoryApproved = 0 AND (PO2.OrderStatusID = 2 OR PO2.OrderStatusID = 3)) 

WHERE 1=1 
AND PO.OrderStatusID != 1 
AND PO.IsOrderApproved = 0 
AND (PO.OrderStatusID = 2 OR PO.OrderStatusID = 3) 

これを行うための正しい方法は何ですか?ですか

+2

サンプルデータと希望の結果を提供してください。 – GuidoG

+0

ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

問題は左結合を実行していることです。すべてを選択します。結合条件が満たされていない場合、POからの行をPO2に変換し、PO2にはNULLを移入します。内部結合を行うか、あるいはIDで結合し、PO2の他の条件をwhere節に持ち込む必要があるかもしれません。 – Jayvee

答えて

0

おそらく、これは最善の方法ではありませんが、サブクエリを使用できます。たとえば、

SELECT 
A1.Sum1, 
A2.Sum2 FROM 
(
    SELECT 
    SUM(sod.OrderQty) sum1, 
    1 joinnumber 
    FROM 
    Sales.SalesOrderDetail sod 
    WHERE 
    sod.ProductID = 772 
) AS A1 
    JOIN (
      SELECT 
      SUM(sod.OrderQty) sum2, 
      1 joinnumber 
      FROM 
      Sales.SalesOrderDetail sod 
      WHERE 
      sod.ProductID = 773 
     ) AS A2 
    ON A1.joinnumber = A2.joinnumber 
関連する問題