logo


Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
asamanci  
#1 Gönderildi : 24 Ocak 2016 Pazar 17:12:47(UTC)
asamanci

Sıralama: Newbie

Gruplar: Registered
Katılan: 24.01.2016(UTC)
Mesajlar: 4
Turkey
Konum: antalya

Merhaba Arkadaşlar,

Benim elidem bir sorgu var belli bir yerde takıldım. Senaryoyu size açıklayayım.
Her birimde belirli işlemler yapılıyor. Bu işlemlerin kabul tarihi ve sonuçların çıktığı tarihler var.
Her birimde sonuçların çıkma süreleri var.ben bu birimi seçtireceğim program üzerinden örnek LAb gelen tetkik sorgu yapıldığı tarihle kayıt
tarihinden çıkarılacak 10 dan büyük olanları sorguya getirme buna benze bir kaç birim olacak acil yardımlarınız bekliyorum

örnek sorgu aşağıda

select distinct(orn.ornek_adi + '' + orn.ornek_soyadi) as HASTA,orn.ornek_id as ORNEKNO,
orn.ornek_gelis_tarihi as ORNEKGELISTARIHI,
DATEDIFF(day,orn.ornek_gelis_tarihi,GETDATE()) as GECENGUN,
orn.ornek_protokol as KABULNO,orn.ornek_cinsiyet as CINSIYET,
orn.ornek_tc_kimlik as TCNO, orn.ornek_kayit_tarihi AS ORNEKKAYITTARIHI,
orn.ornek_dosya_no as HASTAARSİV,snc.sonuc_cihazdan_alma_tarih as CIHAZDANSONUCALMATARIHI,snc.sonuc as SONUC,snc.sonuc_aciklama as SONUCACIKLAMA from
lis.. ViewOrnek orn,lis..ViewSonuc snc,lis..test tst,lis..unite u
where orn.ornek_id=snc.sonuc_ornekno
AND tst.test_id=snc.test_id
AND snc.sonuc_cihazdan_alma_tarih is null
AND snc.sonuc is null
AND snc.numune_kabul is null

bu çizgilerle aldığım kısımda hata alıyorum bir türlü yapamadım

AND (case when u.unite_adi='Mikrobiyoloji' and u.unite_adi='Halk Sağlığı Lab.-Mikrobiyoloji' then DATEDIFF(day,orn.ornek_gelis_tarihi,GETDATE()) > 10 end)

AND orn.ornek_gelis_tarihi>='2015-01-01 00:00:00'
AND orn.ornek_gelis_tarihi<='2016-01-24 23:59:00'
AND u.unite_adi='Mikrobiyoloji'


mehmetzekikir  
#2 Gönderildi : 25 Ocak 2016 Pazartesi 11:05:58(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Originally Posted by: asamanci Go to Quoted Post
Merhaba Arkadaşlar,

Benim elidem bir sorgu var belli bir yerde takıldım. Senaryoyu size açıklayayım.
Her birimde belirli işlemler yapılıyor. Bu işlemlerin kabul tarihi ve sonuçların çıktığı tarihler var.
Her birimde sonuçların çıkma süreleri var.ben bu birimi seçtireceğim program üzerinden örnek LAb gelen tetkik sorgu yapıldığı tarihle kayıt
tarihinden çıkarılacak 10 dan büyük olanları sorguya getirme buna benze bir kaç birim olacak acil yardımlarınız bekliyorum

örnek sorgu aşağıda

select distinct(orn.ornek_adi + '' + orn.ornek_soyadi) as HASTA,orn.ornek_id as ORNEKNO,
orn.ornek_gelis_tarihi as ORNEKGELISTARIHI,
DATEDIFF(day,orn.ornek_gelis_tarihi,GETDATE()) as GECENGUN,
orn.ornek_protokol as KABULNO,orn.ornek_cinsiyet as CINSIYET,
orn.ornek_tc_kimlik as TCNO, orn.ornek_kayit_tarihi AS ORNEKKAYITTARIHI,
orn.ornek_dosya_no as HASTAARSİV,snc.sonuc_cihazdan_alma_tarih as CIHAZDANSONUCALMATARIHI,snc.sonuc as SONUC,snc.sonuc_aciklama as SONUCACIKLAMA from
lis.. ViewOrnek orn,lis..ViewSonuc snc,lis..test tst,lis..unite u
where orn.ornek_id=snc.sonuc_ornekno
AND tst.test_id=snc.test_id
AND snc.sonuc_cihazdan_alma_tarih is null
AND snc.sonuc is null
AND snc.numune_kabul is null

bu çizgilerle aldığım kısımda hata alıyorum bir türlü yapamadım

AND (case when u.unite_adi='Mikrobiyoloji' and u.unite_adi='Halk Sağlığı Lab.-Mikrobiyoloji' then DATEDIFF(day,orn.ornek_gelis_tarihi,GETDATE()) > 10 end)

AND orn.ornek_gelis_tarihi>='2015-01-01 00:00:00'
AND orn.ornek_gelis_tarihi<='2016-01-24 23:59:00'
AND u.unite_adi='Mikrobiyoloji'




merhabalar bence burada case kullanamdan yapabiliriz , biraz daha açabilirsen daha rahat cevap verebilirim,

sorguda bir eksiklik var gördüğüm kadarı ile , from dan sonra aldıgın tabloların cogunu joinlememişsin bunlar boşta kalmıs ? bilinçlimi yapılmıs bu
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
asamanci  
#3 Gönderildi : 25 Ocak 2016 Pazartesi 11:27:22(UTC)
asamanci

Sıralama: Newbie

Gruplar: Registered
Katılan: 24.01.2016(UTC)
Mesajlar: 4
Turkey
Konum: antalya

DECLARE @START VARCHAR(30);
DECLARE @END VARCHAR(30);
DECLARE @BIRIM VARCHAR(10);
SET @START='2015-06-01 00:00:00';
SET @END='2015-06-30 00:00:00';
SET @BIRIM='200';

IF ((@BIRIM='200') and datediff( day,@START, GETDATE())>7 )

select distinct(orn.ornek_adi + '' + orn.ornek_soyadi) as HASTA,orn.ornek_id as ORNEKNO,
datediff( day,orn.ornek_gelis_tarihi, GETDATE()) as GECENSURE,
orn.ornek_gelis_tarihi as ORNEKGELISTARIHI,
orn.ornek_protokol as KABULNO,orn.ornek_cinsiyet as CINSIYET,
orn.ornek_tc_kimlik as TCNO, orn.ornek_kayit_tarihi AS ORNEKKAYITTARIHI,
orn.ornek_dosya_no as HASTAARSİV,snc.sonuc_cihazdan_alma_tarih as CIHAZDANSONUCALMATARIHI,
snc.sonuc as SONUC,snc.sonuc_aciklama as SONUCACIKLAMA from
lis.. ViewOrnek orn,lis..ViewSonuc snc,lis..test tst,lis..unite u
where orn.ornek_id=snc.sonuc_ornekno
AND tst.test_id=snc.test_id
AND tst.test_ontanimli_unite=u.unite_id
AND snc.sonuc_cihazdan_alma_tarih is null
AND snc.sonuc is null
AND snc.numune_kabul is null
AND orn.ornek_gelis_tarihi>=@START
AND orn.ornek_gelis_tarihi<=@END
AND u.unite_id=@BIRIM
AND tst.test_adi <> 'Gluko test (Hastabaşı, glukometrik)'

ELSE IF ((@BIRIM='116') and datediff( day,@START, GETDATE())>4 )


select distinct(orn.ornek_adi + '' + orn.ornek_soyadi) as HASTA,orn.ornek_id as ORNEKNO,
datediff( day,orn.ornek_gelis_tarihi, GETDATE()) as GECENSURE,
orn.ornek_gelis_tarihi as ORNEKGELISTARIHI,
orn.ornek_protokol as KABULNO,orn.ornek_cinsiyet as CINSIYET,
orn.ornek_tc_kimlik as TCNO, orn.ornek_kayit_tarihi AS ORNEKKAYITTARIHI,
orn.ornek_dosya_no as HASTAARSİV,snc.sonuc_cihazdan_alma_tarih as CIHAZDANSONUCALMATARIHI,
snc.sonuc as SONUC,snc.sonuc_aciklama as SONUCACIKLAMA from
lis.. ViewOrnek orn,lis..ViewSonuc snc,lis..test tst,lis..unite u
where orn.ornek_id=snc.sonuc_ornekno
AND tst.test_id=snc.test_id
AND tst.test_ontanimli_unite=u.unite_id
AND snc.sonuc_cihazdan_alma_tarih is null
AND snc.sonuc is null
AND snc.numune_kabul is null
AND orn.ornek_gelis_tarihi>=@START
AND orn.ornek_gelis_tarihi<=@END
AND u.unite_id=@BIRIM
AND tst.test_adi <> 'Gluko test (Hastabaşı, glukometrik)'

ELSE IF ((@BIRIM='192') and datediff( day,@START, GETDATE())>10)

select distinct(orn.ornek_adi + '' + orn.ornek_soyadi) as HASTA,orn.ornek_id as ORNEKNO,
datediff( day,orn.ornek_gelis_tarihi, GETDATE()) as GECENSURE,
orn.ornek_gelis_tarihi as ORNEKGELISTARIHI,
orn.ornek_protokol as KABULNO,orn.ornek_cinsiyet as CINSIYET,
orn.ornek_tc_kimlik as TCNO, orn.ornek_kayit_tarihi AS ORNEKKAYITTARIHI,
orn.ornek_dosya_no as HASTAARSİV,snc.sonuc_cihazdan_alma_tarih as CIHAZDANSONUCALMATARIHI,
snc.sonuc as SONUC,snc.sonuc_aciklama as SONUCACIKLAMA from
lis.. ViewOrnek orn,lis..ViewSonuc snc,lis..test tst,lis..unite u
where orn.ornek_id=snc.sonuc_ornekno
AND tst.test_id=snc.test_id
AND tst.test_ontanimli_unite=u.unite_id
AND snc.sonuc_cihazdan_alma_tarih is null
AND snc.sonuc is null
AND snc.numune_kabul is null
AND orn.ornek_gelis_tarihi>=@START
AND orn.ornek_gelis_tarihi<=@END
AND u.unite_id=@BIRIM
AND tst.test_adi <> 'Gluko test (Hastabaşı, glukometrik)'


Ben uzun uğraşlar sonrası yukarıdaki else ifle çözdüm sorunu fakat bunu daha kısa yapabilir miyiz?
asamanci  
#4 Gönderildi : 25 Ocak 2016 Pazartesi 11:31:57(UTC)
asamanci

Sıralama: Newbie

Gruplar: Registered
Katılan: 24.01.2016(UTC)
Mesajlar: 4
Turkey
Konum: antalya

Benim amacım birim değişkenine dropdowndan seçtireceğim her seçtirdiğim birimin bir koşulu var onu uygulatacağım
mehmetzekikir  
#5 Gönderildi : 25 Ocak 2016 Pazartesi 13:03:50(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
söyle söyleyeyim daha kısasını yazarsın ama hiç biri yukarıdaki kadar performanslı calısmaz aslında sen olması gerekeni yapmıssın yine de kısasını istiyormusun?
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
asamanci  
#6 Gönderildi : 25 Ocak 2016 Pazartesi 13:06:47(UTC)
asamanci

Sıralama: Newbie

Gruplar: Registered
Katılan: 24.01.2016(UTC)
Mesajlar: 4
Turkey
Konum: antalya

sizi zahmet olmazsa o yöntemi de öğrenmiş olayım fazla bilgi göz çıkarmaz :)


Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.