具有内连接的几个表的一般报告

时间:2016-08-03 05:10:06

标签: sql sql-server database stored-procedures sql-server-2014

我需要制作关于公司卡车的一般报告。

我的架构中有这些表:

架构图片:

enter image description here

基本上,我需要创建一个包含以下内容的表:

|地点|卡车| TotalOfCampaings | CampaingsWithCompleteStatus | CampaingsWithInProcessStatus |

  • 位置:卡车的位置,在卡车桌上。
  • 卡车:按地点划分的卡车数量。
  • TotalOfCampaings :位置和卡车的总投放次数。
  • CampaingsWithCompleteStatus :已完成的广告系列总数,状态位于广告系列控制中。
  • CampaingsWithInProcessStatus :未完成的广告投放总数。

广告投放=订购一辆或多辆卡车。

我尝试了内部联接查询,但我无法得到我对一般报告的期望。

我很感激帮助我!

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM 
    -- Prepare the base data for the report
    (SELECT location, COUNT(*) AS Trucks FROM Truck GROUP BY location) loc
    -- The statistics needed, make sure it is 1 to 1
    -- The status value just guess as you did not mention in the question
    OUTER APPLY
    (
        SELECT 
            COUNT(*) AS TotalOfCampaings, 
            SUM(CASE WHEN cc.campaing_status = 'Complete' THEN 1 ELSE 0 END) AS CampaingsWithCompleteStatus, 
            SUM(CASE WHEN cc.campaing_status = 'InProcess' THEN 1 ELSE 0 END) AS CampaingsWithInProcessStatus
        FROM CampaingControl cc INNER JOIN Truck t ON cc.vin = t.vin 
        WHERE t.location = loc.location
    ) stat