Forum
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 */
)
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.
FOR XML yapısını inceledinizmi.