2017-01-27 3 views
0

いくつかの計算に基づいて複雑なデータを取得するSQLビューを作成しました。今私はGIを作成するためにこれらのビューを使用しています。しかし、GIの結果を見ると、どの会社にログインしているかに関係なく、すべての会社のデータが表示されています。ここでSQLビューを使用して複雑なデータを取得するが、会社は

は、私はGIの結果が現在の会社からアクセスレコードだけが含まれているあなたと同様の図で、私の終わりにはcreated-

CREATE VIEW [dbo].[vw_View1] 
 
AS 
 
\t SELECT \t CompanyID, 
 
\t \t \t OrderNbr, 
 
\t \t \t OrderType, 
 
\t \t \t SUM(BodyCost) AS BodyCost, 
 
\t \t \t SUM(TruckCost) AS TruckCost, 
 
\t \t \t SUM(CostOfParts) AS CostOfParts, 
 
\t \t \t SUM(CostOfLabour) AS CostOfLabour, 
 
\t \t \t SUM(CostOfSub) AS CostOfSub, 
 
\t \t \t SUM(GrossSale) AS GrossSale, 
 
\t \t \t SUM(FET) AS FET, 
 
\t \t \t SUM(TireCredit) as TireCredit, 
 
\t \t \t SUM(LabourHours) AS LabourHours, 
 
\t \t \t InvoiceNbr 
 
\t FROM 
 
\t (
 
\t \t SELECT 
 
\t \t \t /* 00 */ so.CompanyID, 
 
\t \t \t /* 00 */ so.OrderNbr, 
 
\t \t \t /* 00 */ so.OrderType, 
 
\t \t \t /* 05 */ CASE WHEN (ic.ItemClassID = '030') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '040') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '050') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '060') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '061') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '070') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '080') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '090') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '100') 
 
\t \t \t \t \t \t THEN SUM(sol.UsrUserDefinedCost * sol.OrderQty) 
 
\t \t \t \t \t END AS BodyCost, 
 
\t \t \t /* 35 */ CASE WHEN (ic.ItemClassID = '110') 
 
\t \t \t \t \t \t OR (ic.ItemClassID = '111') 
 
\t \t \t \t \t \t THEN SUM(sol.OrderQty) 
 
\t \t \t \t \t END AS LabourHours 
 
\t \t FROM \t SOOrder so 
 
\t \t LEFT JOIN SOLine sol ON so.OrderType = sol.OrderType AND so.OrderNbr = sol.OrderNbr and so.CompanyID = sol.CompanyID 
 
\t \t LEFT JOIN InventoryItem inv ON sol.InventoryID = inv.InventoryID and sol.CompanyID = inv.CompanyID 
 
\t \t LEFT JOIN INItemClass ic ON inv.ItemClassID = ic.ItemClassID and inv.CompanyID = ic.CompanyID 
 
\t \t WHERE so.CompanyID > 0 
 
\t \t GROUP BY so.CompanyID, 
 
\t \t \t \t so.OrderNbr, 
 
\t \t \t \t so.OrderType, 
 
\t \t \t \t ic.ItemClassID, 
 
\t \t \t \t ic.Descr 
 
\t) AS X 
 
\t GROUP BY CompanyID, OrderNbr, OrderType, InvoiceNbr; 
 
GO

答えて

0

を持つSQL図です。

  • SQLビュー:

    CREATE VIEW [dbo].[View1] 
    AS 
    SELECT 
        CompanyID, 
        OrderNbr, 
        OrderType, 
        SUM(LabourHours) AS LabourHours 
    FROM 
        (
         SELECT 
          so.CompanyID, 
          so.OrderNbr, 
          so.OrderType, 
          SUM(sol.OrderQty) AS LabourHours 
         FROM SOOrder so 
         LEFT JOIN SOLine sol ON so.OrderType = sol.OrderType AND so.OrderNbr = sol.OrderNbr and so.CompanyID = sol.CompanyID 
         LEFT JOIN InventoryItem inv ON sol.InventoryID = inv.InventoryID and sol.CompanyID = inv.CompanyID 
         LEFT JOIN INItemClass ic ON inv.ItemClassID = ic.ItemClassID and inv.CompanyID = ic.CompanyID 
         WHERE so.CompanyID > 0 
         GROUP BY so.CompanyID, 
           so.OrderNbr, 
           so.OrderType, 
           ic.ItemClassID, 
           ic.Descr 
        ) AS X 
        GROUP BY CompanyID, OrderNbr, OrderType 
    GO 
    
  • DAC:会社のため

    using System; 
    using PX.Data; 
    
    namespace View 
    { 
        [Serializable] 
        public class View1: IBqlTable 
        { 
        #region OrderNbr 
        [PXDBString(15, IsKey = true, IsUnicode = true, InputMask = "")] 
        [PXUIField(DisplayName = "Order Nbr")] 
        public string OrderNbr { get; set; } 
    
        public class orderNbr : IBqlField{} 
        #endregion 
    
        #region OrderType 
        [PXDBString(2, IsKey = true, IsFixed = true, InputMask = "")] 
        [PXUIField(DisplayName = "Order Type")] 
        public string OrderType { get; set; } 
    
        public class orderType : IBqlField{} 
        #endregion 
    
        #region LabourHours 
    
        [PXDBDecimal()] 
        [PXUIField(DisplayName = "Labour Hours")] 
        public Decimal? LabourHours { get; set; } 
    
        public class labourHours : IBqlField{} 
        #endregion 
        } 
    } 
    
  • GI結果: enter image description here

  • 以下は、このことを証明するためのコードスニペットとスクリーンショットは、 CompのGI結果any2:以下の要求ごと enter image description here

、私はSOタイプと両社で数の受注を追加しました。

  • 会社のためのGI結果:Company2のため enter image description here

  • GI結果: enter image description here

+0

あなたが同じ順序を持っています結果(予期しない、または奇妙な何もない)と下のスクリーンショットをご覧ください。両社の数字は?一度それを試すことができますか? – Krunal

+0

上記の更新された回答を確認してください – RuslanDev

関連する問題