任何人都可以帮我在sql server中如何做到这一点?

时间:2014-12-20 13:54:34

标签: sql-server-2008

select 
    Table1.empName,
    sum(case when saleStatus = 'shipped' and table1.saleApproved = 'yes' 
                then 1
                else 0 
           end) as count_shipped,
    sum(case when saleStatus in ('Pending', 'awaiting payment', 'backorder') 
                then 1 
                else 0 
           end) as count_pending 
from 
   Table1
group by 
   Table1.empName

此查询的输出是

A   0   0
B   0   0
C   0   0
D   0   2
E   0   0
F   0   0
G   0   1
H   0   1
J   0   1

第二个问题是

select 
    empname,
    sum(timeordertook) 
from 
    Table11  
group by 
    empName
order by 
    empName

,此查询的输出为

A   2195
B   2751
C   719
D   2270
E   1539
F   381
G   3793
H   1186
I   267
J   895

我想在第一个查询中添加第二个查询的第二列。任何人都可以帮我在SQL Server中如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您使用join执行此操作。因为两个查询都是聚合的,所以需要小心一点。这是一种方法:

select t1.empName,
       sum(case when t1.saleStatus = 'shipped' and t1.saleApproved = 'yes' then 1 else 0
           end) as count_shipped,
       sum(case when t1.saleStatus in ('Pending', 'awaiting payment', 'backorder') then 1 else 0       
           end) as count_pending,
       max(t11.sumtimeordertook)
from Table1 t1 left join
     (select empname, sum(timeordertook) as sumtimeordertook
      from Table11 t11
      group by empName
     ) t11
     on t1.empname = t11.empname
order by t1.empName
group by t1.empName