0
create table testjob  
(  
jobid int,  
jobname varchar(100),  
time float,  
name varchar(50),  
Date varchar(100),  
comments varchar(500)  
)

insert into testjob values ( 1001,'java work',4.5,'arjun','9/26/2012  12:00:00 AM','Sample test comments 1')
insert into testjob values ( 1005,'sql work',10,'arjun','9/28/2012  12:00:00 AM','Sample test comments 2')
insert into testjob values ( 1010,'.net work',7.5,'arjun','8/13/2012  12:00:00 AM','Sample test comments 3')
insert into testjob values ( 1040,'java work',5.5,'ravi','9/14/2012  12:00:00 AM','Sample test comments 1')
insert into testjob values ( 1023,'php work',2.5,'arjun','9/5/2012  12:00:00 AM','Sample test comments 4')
insert into testjob values ( 1027,'.net work',3.5,'ravi','8/24/2012  12:00:00 AM','Sample test comments 2')

私の出力が以下のようになるように、カーソルを使用しない手順が必要です:(可能であれば、 with 演算子を使用したクエリが必要です)

Name:Arjun(24.5 Hrs spent)

jobname          Time            Date                Comments  
java work     4.5     9/26/2012  12:00:00 AM   Sample test comments 1   
sql work      10      9/28/2012  12:00:00 AM   Sample test comments 2  
.net work     7.5     8/13/2012  12:00:00 AM   Sample test comments 3  
php  work     2.5     9/5/2012  12:00:00 AM    Sample test comments 4

Name:Ravi(9 Hrs spent)

jobname       time           Date             Comments  
java work     5.5     9/14/2012  12:00:00 AM   Sample test comments 1  
.net work     3.5     8/24/2012  12:00:00 AM   Sample test comments 2  
4

1 に答える 1

3

このSQLフィドルをチェックしてください

クエリに WITH を使用する必要はありません。

select name,case when jobname is null
                 then cast(sum(time) as varchar(12)) + ' hrs spent'
                 else jobname end jobname,time,date,comments
from testjob
group by grouping sets ((name),(name,jobname,time,date,comments))
order by name,comments

グループ化セットは実際には必要ありません。これは、クエリ ツール内から要約されたヘッダーを使用して表示する方法を示すためだけに含まれています。このデータを Visual Studio などのフロントエンド ツールに取り込む場合は、そこでグループ化を制御し、単純にデータを並べ替えて返す必要があります。

select name,jobname,time,date,comments
from testjob
order by name,comments
You keep a running total of time until the name changes.

参考までに、「コメント」ではなく「日付」など、より適切な並べ替え順序を選択する必要がありますが、これは、あなたが示した結果を正確に与えることがわかった唯一の順序です.

于 2012-10-05T07:25:26.510 に答える