-3

これは私のテーブルです

Create table gpscli
(
   cliente int,/*this is my id client*/
   inicio datetime,/*this is start time*/
   fin datetime,/this is finished time**/
   fecha datetime/*this is my date because inicio and fin could be a bad date*/
)

埋められたテーブルはこのようなものです

select cliente, inicio, fin, fecha from gpscli order by fecha, cliente

1 '23-04-2012 10:23:51' '23-04-2012 10:26:38' '23-04-2012 00:00:000'
2 '23-04-2012 10:28:41' '23-04-2012 10:30:12' '23-04-2012 00:00:000'
3 '23-04-2012 10:33:58' '23-04-2012 10:37:24' '23-04-2012 00:00:000'
4 '23-04-2012 10:40:42' '23-04-2012 10:43:12' '23-04-2012 00:00:000'
5 '23-04-2012 10:45:46' '23-04-2012 10:57:18' '23-04-2012 00:00:000'
1 '24-04-2012 10:23:12' '24-04-2012 10:26:28' '24-04-2012 00:00:000'
2 '24-04-2012 10:23:29' '24-04-2012 10:26:58' '24-04-2012 00:00:000'
3 '24-04-2012 10:23:23' '24-04-2012 10:26:56' '24-04-2012 00:00:000'
4 '24-04-2012 10:23:12' '24-04-2012 10:26:28' '24-04-2012 00:00:000'
5 '24-04-2012 10:23:29' '24-04-2012 10:26:58' '24-04-2012 00:00:000'
1 '24-05-2012 10:23:12' '24-05-2012 10:26:28' '24-05-2012 00:00:000'
2 '24-05-2012 10:23:29' '24-05-2012 10:26:58' '24-05-2012 00:00:000'
3 '24-05-2012 10:23:23' '24-05-2012 10:26:56' '24-05-2012 00:00:000'
4 '24-05-2012 10:23:12' '24-05-2012 10:26:28' '24-05-2012 00:00:000'
5 '24-05-2012 10:23:29' '24-05-2012 10:26:58' '24-05-2012 00:00:000'

この情報は、この時点でユーザーによって保存され、「スーパーバイザー」と呼ばれます

スーパーバイザーとは、クライアントが何を求めているのかを店頭で質問する人です。

それで彼(監督者)は車の中で動きます。彼が(pockec pcで)ウィンドウを開くと、「inicio」が保存され、スーパーバイザーがウィンドウを閉じると、「fin」がデータベースに保存されます。

この情報を使用して、スーパーバイザーがクライアントとmesで移動するのにかかった時間を取得できましたが、本当に必要なのは、スーパーバイザーがクライアント間を移動するのにかかった時間です。

クライアント1は、1日の最初のクライアントである必要はありません。最初のクライアントは、最小inicio列を持つクライアントです。fin列を持つ最後のクライアントについても同じです。

スーパーバイザーがクライアント間を移動するのにかかった時間。

私はそれとして何かが必要です

  • 最初のクライアントの転送時間は0です。
  • 2番目のクライアントの場合、転送時間はinicio(このinicio列は現在のものです)- fin(これfinは前のクライアントです)
  • 3番目のクライアントの場合、転送時間はinicio(このinicio列は現在のものです)- fin(これfinは前のクライアントです)

最後に必要になりますgroup by month,client

どうやって入手したらいいのかわからない(ループを使わずに使いたくない)

4

1 に答える 1

0

解決できた

create table #datos
(
cliente int,
fecha datetime,
inicio datetime,
fin datetime,
id int identity
)


insert into #datos (cliente,fecha,inicio,fin)
select cliente,fecha,  isnull(t_inicio,'01/01/1900') inicio,isnull(t_fin,'01/01/1900') fin
from gpscli order by  fecha, t_inicio,t_fin


alter table #datos
add idmas1 int

update #datos set idmas1=id+1


select d.cliente, d.fecha, d.inicio, d.fin,d.id,d2.fin fin_anterior from #datos d
inner join #datos d2 on
d.id=d2.idmas1

これで、「fin_anterior」という終了時刻が表示され、クライアント、月、または必要に応じてグループ化できます。

于 2012-11-26T19:15:46.957 に答える