Toplam Çalışmamış z...
 
Bildirimler
Hepsini Temizle

[Çözüldü] Toplam Çalışmamış zamanı bulma  

Tuncay Güven
(@tuncayguven)
Üye

Merhabalar,

Aşağıda örnek kaydı bulunan tablomda toplam çalışılmamış zamanı bulmak istiyorum fakat yapamadım,

Bilgisi olan arkadaşlardan yardım talep ediyorum.

Yapmak istediğim, isTakipId verisi değişkendir. ilgili isTakipId değerinde kaç kayıt varsa hesaplamadan sonra gün ve saat verisini almak istiyorum

Tabloda veriler herzaman Çalışmıyordan başlayacak Çalışıyor diye devam edecek sonra çalışmıyor eklenebilecek Boş yazanlar hesaplamaya dahil olmayacak

Özetle: 10 adet çalışmıyor ve çalışıyor arasındaki tarih ve saat verisinden sonra bu teknisyen bu işde 5 saat çalışmadı, yada bu teknisyen 1 gün 10 saat çalışmadı gibi bir veri almak istiyorum.

 

NOT: EĞER DAHA KOLAY HESAPLAMA YAPILACAK BAŞKA TABLO YAPISI VAR İSE TABLO YAPIMI DEĞİŞTİREBİLİRİM ÇALIŞMIYOR VE ÇALIŞIYOR DEĞERLERİNİ FARKLI TABLODA TUTABİLİRİM. GÜNÜN SONUNDA İLGİLİ İD DEKİ HESAPLAMAYI ALABİLECEĞİM BİR YAPIYA İHTİYACIM VAR

 

image
Alıntı
Topic starter Gönderildi : 15/11/2020 01:01
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

Biraz daha fazla datanın olduğu (en az 1000 satır olursa iyi olur.) gönderirsen sorgusunu göndereyim.

CevapAlıntı
Gönderildi : 16/11/2020 14:35
Tuncay Güven
(@tuncayguven)
Üye

@omercolakoglu

Merhaba Ömer bey,

İki gündür heycanla bir arkadaşın cevap vermesini bekliyordum. Cevabınız için çok teşekkür ederim.

Yaptığım yazılımda isTakipId ye göre işlem yapacağım için örnek bir kayıt ekledim DB ye daha fazla kayıt DB'de bulunmamaktadır. Eğer isTakipId ye göre örnekteki SQL sorgusunu gönderebilirseniz çok memnun olurum.

Yardımlarınız için çok teşekkür ederim.

iyi çalışmalar

Tuncay GÜVEN

CevapAlıntı
Topic starter Gönderildi : 16/11/2020 15:12
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

Sanırım bu iş görür.

query
CevapAlıntı
Gönderildi : 16/11/2020 15:51
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

bu da sorgusu

--select * from calisma

--create table #t(id int,kkodu int, isTakipId int,teknisyenDurum varchar(100),teknisyenTarih datetime,oncekiId int,oncekidurum varchar(100),oncekiTarih datetime,calismaDurumu varchar(100),sure int)
truncate table #t
INSERT INTO #t (id,kkodu,isTakipId,teknisyenDurum,teknisyenTarih)

select id,kkodu,isTakipId,teknisyenDurum,teknisyenTarih from calisma

update #t set oncekiId=(select top 1 id from calisma where kkodu=#t.kkodu and isTakipId=#t.isTakipId and teknisyenTarih<#t.teknisyenTarih order by teknisyenTarih desc)
update #t set oncekiDurum=(select top 1 teknisyenDurum from calisma where kkodu=#t.kkodu and isTakipId=#t.isTakipId and teknisyenTarih<#t.teknisyenTarih order by teknisyenTarih desc)
update #t set oncekiTarih=(select top 1 teknisyenTarih from calisma where kkodu=#t.kkodu and isTakipId=#t.isTakipId and teknisyenTarih<#t.teknisyenTarih order by teknisyenTarih desc)

update #t set calismaDurumu='Çalışıldı' where teknisyenDurum='Çalışmıyor' and oncekiDurum='Çalışıyor'
update #t set calismaDurumu='Duruldu' where teknisyenDurum='Çalışıyor' and oncekiDurum='Çalışmıyor'
update #t set calismaDurumu='Boş' where teknisyenDurum='Boş'
update #t set calismaDurumu='Boş' where teknisyenDurum='Çalışmıyor' and oncekiDurum='Boş'
update #t set sure=datediff(minute,oncekitarih,teknisyentarih)
select * from #t

SELECT isTakipId,calismaDurumu,sum(sure) as sure_dk from #t
group by isTakipId,calismaDurumu

 

CevapAlıntı
Gönderildi : 16/11/2020 15:53
Tuncay Güven
(@tuncayguven)
Üye

@omercolakoglu

Merhaba Ömer bey,

Yardımlarınız için çok teşekkür ederim. Tam istediğim sonucu alıyorum Yanında Bonus olarak çalışan süreyi de göstermişsiniz. 

Tekrardan teşekkürler

iyi çalışmalar

Tuncay GÜVEN

CevapAlıntı
Topic starter Gönderildi : 16/11/2020 16:55
Ömer ÇOLAKOĞLU
(@omercolakoglu)
Üye

@tuncayguven Rica ederim. İşinin çözülmesine sevindim.

CevapAlıntı
Gönderildi : 16/11/2020 18:10
Paylaş: