1
    Select Name,
sum(case when DayAci = 'Sunday' then 1 else 0 END) as Sunday,
sum(case when DayAci = 'Monday' then 1 else 0 END) as Monday,
sum(case when DayAci = 'Tuesday' then 1 else 0 END) as Tuesday,
sum(case when DayAci = 'Wednesday' then 1 else 0 END) as Wednesday,
sum(case when DayAci = 'Thursday' then 1 else 0 END) as Thursday,
sum(case when DayAci = 'Friday' then 1 else 0 END) as Friday,
sum(case when DayAci = 'Saturday' then 1 else 0 END) as Saturday,
count(*) as Total
from Caraccident
where Accident = 'Near-miss'
group by Name;

Select Name,
count(*) as Total 
From CaraccidentPrevious
where Accident = 'Near-miss'
group by Name;

在这样的表格中显示信息

Name | Sunday | Monday | Tuesday | ..... | Total | Previous Total

 Joe     0        2         1                3         5

第一个 SQL 语句为我提供了每天所需的数据和总计。第二个为我提供了以前总计所需的数据。使用 SQL 服务器

4

3 回答 3

1
  Select Name,
    sum(case when DayAci = 'Sunday' then 1 else 0 END) as Sunday,
    sum(case when DayAci = 'Monday' then 1 else 0 END) as Monday,
    sum(case when DayAci = 'Tuesday' then 1 else 0 END) as Tuesday,
    sum(case when DayAci = 'Wednesday' then 1 else 0 END) as Wednesday,
    sum(case when DayAci = 'Thursday' then 1 else 0 END) as Thursday,
    sum(case when DayAci = 'Friday' then 1 else 0 END) as Friday,
    sum(case when DayAci = 'Saturday' then 1 else 0 END) as Saturday,
    count(*) as Total
    (SELECT count(*) from CaraccidentPrevious
      WHERE Accident = 'Near-miss' 
        AND  name = CarAccident.name 
        AND Accident = 'Near-miss' )                  AS PreviousTotal
    group by Name;
于 2013-07-10T13:18:08.280 回答
1

您可以使用子查询将结果连接在一起:

Select Name, sum(case when DayAci = 'Sunday' then 1 else 0 END) as Sunday,
       sum(case when DayAci = 'Monday' then 1 else 0 END) as Monday,
       sum(case when DayAci = 'Tuesday' then 1 else 0 END) as Tuesday,
       sum(case when DayAci = 'Wednesday' then 1 else 0 END) as Wednesday,
       sum(case when DayAci = 'Thursday' then 1 else 0 END) as Thursday,
       sum(case when DayAci = 'Friday' then 1 else 0 END) as Friday,
       sum(case when DayAci = 'Saturday' then 1 else 0 END) as Saturday,
       count(*) as Total, max(cap.prevTotal) as prevTotal
 from Caraccident ca left outer join
      (select cap.name, count(*) as prevTotal
       from CaraccidentPrev cap
       where cap.Accident = 'Near-miss'
       group by cap.name
      ) cap
      on cap.name = ca.name
 where Accident = 'Near-miss'
 group by Name;
于 2013-07-10T13:18:21.660 回答
0
Select CC.Name,
sum(case when CC.DayAci = 'Sunday' then 1 else 0 END) as Sunday,
sum(case when CC.DayAci = 'Monday' then 1 else 0 END) as Monday,
sum(case when CC.DayAci = 'Tuesday' then 1 else 0 END) as Tuesday,
sum(case when CC.DayAci = 'Wednesday' then 1 else 0 END) as Wednesday,
sum(case when CC.DayAci = 'Thursday' then 1 else 0 END) as Thursday,
sum(case when CC.DayAci = 'Friday' then 1 else 0 END) as Friday,
sum(case when CC.DayAci = 'Saturday' then 1 else 0 END) as Saturday,
count(CC.*) as Total,
max(T.Total1)
from Caraccident CC
inner join (Select Name,count(*) as Total1 
            From CaraccidentPrevious
            where Accident = 'Near-miss'
            group by Name;
           )T
on T.name=CC.name
where Accident = 'Near-miss'
group by Name;
于 2013-07-10T13:18:29.177 回答