2013-07-02 67 views
0

我在sql存储过程中有一个查询。我想从其ID的其他查询获得记录,我如何做到这一点。存储过程中的子查询

SELECT t.Name ,t.CreatedDate ,t.CreatedBy , t.Amount 
     ,t.Margin ,t.Probability ,t.Id 
FROM (SELECT a = 1) a 
CROSS JOIN 
    (SELECT 
     Name = HirschInternational_MSCRM.dbo.SalesOrderBase.Name 
     ,CreatedDate=HirschInternational_MSCRM.dbo.SalesOrderBase.CreatedOn 
     ,CreatedBy=HirschInternational_MSCRM.dbo.SystemUserBase.FullName 
     ,Amount = totalamount 
     ,Probability=CloseProbability 
     ,Id=SalesOrderId 
     ,Margin=(SELECT (ISNULL(((Sum(Price)-Sum(CurrentCost))/NULLIF(Sum(Price), 0))*100, 0)) 
       FROM HirschInternational_MSCRM.dbo.ProductBase 
       JOIN HirschInternational_MSCRM.dbo.SalesOrderDetailBase 
        ON HirschInternational_MSCRM.dbo.SalesOrderDetailBase.ProductId = HirschInternational_MSCRM.dbo.ProductBase.ProductId 
       JOIN HirschInternational_MSCRM.dbo.SalesOrderBase 
        ON HirschInternational_MSCRM.dbo.SalesOrderBase.SalesOrderId = HirschInternational_MSCRM.dbo.SalesOrderDetailBase.SalesOrderId) 
    FROM HirschInternational_MSCRM.dbo.SalesOrderBase 
    JOIN HirschInternational_MSCRM.dbo.OpportunityBase 
     ON HirschInternational_MSCRM.dbo.SalesOrderBase.Opportunityid = HirschInternational_MSCRM.dbo.OpportunityBase.Opportunityid 
    JOIN HirschInternational_MSCRM.dbo.SystemUserBase 
     ON HirschInternational_MSCRM.dbo.SystemUserBase.SystemUserId = HirschInternational_MSCRM.dbo.SalesOrderBase.CreatedBy 
    WHERE YEAR(HirschInternational_MSCRM.dbo.SalesOrderBase.CreatedOn)=YEAR(GETDATE()) 

我想从我希望输出像 enter image description here

+0

您的查询语法错误。你可能没有复制全部内容。编辑你的问题,剪下现有的代码,并粘贴完整的SELECT语句。 –

回答

0

我想获取每条记录的保证金如何为SalesOrderId过滤保证金查询 如

Margin=(SELECT (ISNULL(((Sum(Price)-Sum(CurrentCost))/NULLIF(Sum(Price), 0))*100, 0)) 
       FROM HirschInternational_MSCRM.dbo.ProductBase 
       JOIN HirschInternational_MSCRM.dbo.SalesOrderDetailBase 
        ON HirschInternational_MSCRM.dbo.SalesOrderDetailBase.ProductId = HirschInternational_MSCRM.dbo.ProductBase.ProductId 
       JOIN HirschInternational_MSCRM.dbo.SalesOrderBase 
        ON HirschInternational_MSCRM.dbo.SalesOrderBase.SalesOrderId = HirschInternational_MSCRM.dbo.SalesOrderDetailBase.SalesOrderId 
Where HirschInternational_MSCRM.dbo.SalesOrderBase.SalesOrderId= //SalesOrderId that I get in main query) 

如何在此查询中传递SalesOrderId

0

这不是完全清楚你想要的每一条记录保证金,但你可能来寻找类似

select * 
from (your SQL SELECT statement goes here) t1 
where id = ?;