Anasayfa » Forum

T-SQL de iki ayrı s...
 

T-SQL de iki ayrı sorguyu tek sorguda birleştirme  

  RSS
berke bozkurt
(@berkebozkurt)
Yeni Üye

Yapacağım işleri kafamdaki sıra ile takip etmek istiyorum.

En üstte DEADLINE ı olup ve DEADLINE a 7 gün veya daha az süre olan işler görüntülenecek(eğer işlerin DEADLINE ı aynı ise IMPORTANCE a göre sıralanmasını istedim), onun altında ise kalan işler CURRENTDATE yani getdate() ile çektiğim işin giriliş tarihine göre sıralanacak.

Bu iki işi iki ayrı sorguda yazdım ama bu soguları nasıl birleştirebilirim bilmiyorum. Aşağıda tablomun basite indirgenmiş halini ve yazdığım sorguları paylaşıyorum.

 

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

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

select deadline, datediff(day, getdate(), deadline) as reday, importance, relation, subjectname, workname, contententry, currentdate from dbo.workshift
where datediff(day, getdate(), deadline) <= 7
order by deadline, importance desc

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

select deadline, datediff(day, getdate(), deadline) as reday, importance, relation, subjectname, workname, contententry, currentdate from dbo.workshift
where deadline=null
order by currentdate
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

create table dbo.workshift

(
bodyid int not null identity(1,1), /* iş id: işin takip numarası */
subjectname nvarchar(max), /* konu adı: işin konusunun ne olduğu */
workname nvarchar(max), /* iş adı: işin hangi hatla ya da hangi durumla ilgili olduğu */
relation nvarchar(100), /* ilişki: işin kiminle(hangi mühendisle) ilişkili olduğu */
dateid char(1), /* tarih id: deadline içerenler için 0, içermeyenler için 1 kullanılacak */
deadline datetime, /* son tarih: işin bitirilmesi gereken son tarih */
currentdate datetime not null default getdate(), /* anın tarihi: işin girildiği tarih */
importance char(1), /* önem derecesi: işin ne kadar önemli olduğu 1 den 5 e kadar girilecek. 5 en önemli */
contententry nvarchar(max) /* içerik: işin ne olduğunun anlatıldığı bölüm */
)

Alıntı
Gönderildi : 13/06/2018 13:01
Yavuz Filizlibay
(@YavuzFilizlibay)
Üye

Merhaba

Union all komutunu deneyebilirsiniiz

CevapAlıntı
Gönderildi : 17/06/2018 22:04
berke bozkurt
(@berkebozkurt)
Yeni Üye

Yavuz Bey,

Yanıtınız için teşekkür ederim lakin "union all" dan önce "order by" kullanımına izin vermiyor T-SQL. Bu kodun temel amacı zaten sıralama yapmak, o yüzden işimi görmüyor malesef "union all"

Sanırım sürekli geçici tablo oluşturup, bu iki sorgunun sonucunu için basan bir sp yazmam gerekecek. Ne kadar kaçınmaya çalışsam da bazı şeyler kaçınılmaz oluyor sanırım.

CevapAlıntı
Gönderildi : 03/07/2018 03:14
Birol Aydugan
(@birolaydugan)
Üye

FOR XML yapısını inceledinizmi.

CevapAlıntı
Gönderildi : 03/07/2018 13:31
Paylaş:
  
Çalışıyor

Lütfen Giriş yap yada Kayıt ol