Forum

T-SQL de iki ayrı s...
 
Bildirimler
Hepsini Temizle

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

3 Yazılar
2 Üyeler
0 Reactions
5,955 Görüntüleme
(@berkebozkurt)
Gönderiler: 2
New Member
Konu başlatıcı
 

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 */
)

 
Gönderildi : 13/06/2018 13:01

(@berkebozkurt)
Gönderiler: 2
New Member
Konu başlatıcı
 

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.

 
Gönderildi : 03/07/2018 03:14

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

FOR XML yapısını inceledinizmi.

 
Gönderildi : 03/07/2018 13:31

Paylaş: