MS SQL Server常見問題 -- 分組 去重複 查詢 統計

iSQlServer發表於2010-10-21

現在有如下 資料

姓名 標識 部門 部門標識 通話型別 通話時長 通話時間
張三 1 一組 1 1 30 2010-01-01 01:22:45
張三 1 一組 1 0 41 2010-01-01 04:22:45
張三 1 一組 1 1 80 2010-01-02 05:22:45
張三 1 一組 1 0 45 2010-01-02 08:22:45
張三 1 一組 1 1 45 2010-01-02 01:22:45
張三 1 一組 1 0 38 2010-01-03 01:22:45
李四 2 2組 2 1 30 2010-01-01 01:22:45
李四 2 2組 2 0 41 2010-01-01 04:22:45
李四 2 2組 2 1 84 2010-01-02 05:22:45
李四 2 2組 2 0 45 2010-01-02 08:22:45
李四 2 2組 2 1 45 2010-01-02 01:22:45
李四 2 2組 2 0 38 2010-01-03 01:22:45

還有很多這樣的資料…..
 
我要的效果如下

張三 1 一組 1 3 count(通話型別) 170 sum(通話時長) 2010-01-02
張三 1 一組 1 2 71 2010-01-01
張三 1 一組 1 1 38 2010-01-03  
李四 2 2組 2 3 170sum 2010-01-02
李四 2 2組 2 2 71 2010-01-01
李四 2 2組 2 1 38 2010-01-03  

每個人 每一天 只能有一條資料 這個怎麼弄呢?

 

SQL Code:
--&gt 生成測試資料表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
GO

CREATE TABLE TB (
姓名 VARCHAR(10),
標識 INT,
部門 VARCHAR(10),
部門標識 INT,
通話型別 INT,
通話時長 INT,
通話時間 DATETIME)

--&gt 給測試資料表[tb]增添資料:
INSERT INTO TB
SELECT '張三', 1 ,'一組', 1,1 ,30,'2010-01-01 01:22:45'
UNION ALL SELECT '張三', 1 ,'一組', 1,0 ,41,'2010-10-01 04:22:45'
UNION ALL SELECT '張三', 1 ,'一組', 1,1 ,80,'2010-10-02 05:22:45'
UNION ALL SELECT '張三', 1 ,'一組', 1,0 ,45,'2010-10-02 08:22:45'
UNION ALL SELECT '張三', 1 ,'一組', 1,1 ,45,'2010-10-02 01:22:45'
UNION ALL SELECT '張三', 1 ,'一組', 1,0 ,38,'2010-10-03 01:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,1 ,30,'2010-10-01 01:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,0 ,41,'2010-10-01 04:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,1 ,84,'2010-10-02 05:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,0 ,45,'2010-10-02 08:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,1 ,45,'2010-10-02 01:22:45'
UNION ALL SELECT '李四', 2 ,'2組', 2 ,0 ,38,'2010-10-03 01:22:45'

--&gt 對測試資料表[tb]進行資料統計:
select [姓名],[標識],[部門],[部門標識], count([通話型別]) as [通話型別],
sum([通話時長]) as [通話時長],
convert(char(10), [通話時間],120) as [通話時間]
from tb
group by [姓名],[標識],[部門],[部門標識],convert(char(10), [通話時間],120)
order by [標識] asc,[通話型別] Asc,[通話時間] desc

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-676466/,如需轉載,請註明出處,否則將追究法律責任。

相關文章