SQL'de Koşullu Listelemeler

-- Kullanılacak veritabanı olarak Ticaret veritabanının seçilmesi
use Ticaret

---------------------------------------------------------------------------------------
-- Bilgi giriş sırasına göre kayıtlı olan ve normalde bu sıraya göre gelen listeyi 'order by' fiiliyle sıralatıyoruz. Sıralama order by cümleciğinde kolonların yazılış sırasına göre olur. En önce sol baştaki kolona göre, sonuncu olarak da sağ baştaki kolona göre sıralama yapılır. En soldaki kolon en dış küme olmuş olur. En sağdaki kolon ise en iç küme olur. 
-- Order by kullanıldığında listelenecek kolonların yazılış sırası, order by cümleciğindeki yazılış sırasına göre olmalıdır. Böylece kümeler anlaşılsın ve sıralama belli olsun. 

select
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi 
from SatisBilgileri
order by SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi 

---------------------------------------------------------------------------------------
-- View nesnesinde veya tabloda SatisTutari kolonu yokken SatisFiyati ile SatisAdedi çarptırılarak yapılan sorgu 

select
*, SatisFiyati*SatisAdedi as SatisTutari
from SatisBilgileri

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

-- View nesnesine SatisTutari kolonunun Hesaplanmış Kolon olarak eklenmesi 

alter view SatisBilgileri
as
select
SatisTarihi,
BayiAdi,
BolgeAdi,
UrunCinsiAdi,
MarkaAdi,
SatisFiyati,
SatisAdedi,
SatisFiyati*SatisAdedi as SatisTutari
from Satislar ks
left join Bayiler ba on ba.BayiID=ks.BayiID
left join Bolgeler bl on bl.BolgeID=ba.BolgeID
left join Urunler u on u.UrunID=ks.UrunID
left join Markalar m on m.MarkaID=u.MarkaID
left join UrunCinsleri uc on uc.UrunCinsiID=u.UrunCinsiID

-- View nesnesinde özel durumlar dışında order by kullanmıyoruz. Özel durumları anlatacağım. 

---------------------------------------------------------------------------------------
-- View nesnesinde SatisTutari Hesaplanmış Kolon olarak bulunduğundan bir işlem yapmadan gelir. 

select
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi, SatisTutari 
from SatisBilgileri
order by SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi 
















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

-- SatisBilgileri View nesnesinden 2013 yılı Ekim ayı satışlarının listelenmesi

select
*
from SatisBilgileri
where year(SatisTarihi) = 2013 and month(SatisTarihi) = 10
order by BayiAdi, SatisTarihi desc
 
---------------------------------------------------------------------------------------
-- SatisBilgileri View nesnesinden Kara isimli bayinin 2012 yılındaki Adel markalı Kalem satışlarının listelenmesi

select
*
from SatisBilgileri
where BayiAdi='KARA' and year(SatisTarihi)=2012 and MarkaAdi='Adel' and UrunCinsiAdi='Kalem'

---------------------------------------------------------------------------------------
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2012 yılı satışlarının listelenmesi
-- Aynı kolonda filtreleme yaparken 'or' bağlacını, farklı kolonlarda ise 'and' bağlacını kullanıyoruz. 

select
*
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi)=2012

---------------------------------------------------------------------------------------
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2010, 2011, 2012 yıllarındaki satışlarının listelenmesi
-- Bir kolona ait birden fazla kriteri bir parantez içinde yazıyoruz. Filtreleme yaptığımız kolonu 'or', 'or', 'or' yazmış gibi bu parantezin içindekilerle karşılaştırıyoruz. Uyanlar listeleniyor. 

select
*
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi) in (201020112012)
 
--------------------------------------------------------------------------------------- 
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2010 ile 2012 yılları arasındaki satışlarının listelenmesi
-- Bir sayısal kolondaki bilgileri iki değer arasında aratıyorsak 'between ... and ...' kalıbını kullanıyoruz. İki değerin arasına 'and' bağlacını yazıyoruz. 

select
*
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi) between 2010 and 2012

--------------------------------------------------------------------------------------- 
-- SatisBilgileri View nesnesinden Kara isimli bayinin 2012 yılında sattığı UrunCinsiAdi bilgilerinin listelenmesi 
-- Aşağıdaki listede listelenen bilgi tekrarlı geldiği için distinct terimiyle tekrarsız liste elde ediyoruz. 

select
distinct UrunCinsiAdi
from SatisBilgileri
where BayiAdi='KARA' and year(SatisTarihi) = 2012
order by UrunCinsiAdi

Bu blogdaki popüler yayınlar

Power BI'da Yeni Sütun Eklemek

Power BI Kullanımına Giriş

Power BI Üzerinde Fonksiyon Oluşturma ve Kullanma

Kümülatif Toplam

Ağırlıklı Ortalama Hesabı

SQL'de Group By Yaparak Rapor Oluşturmak

SQL'de Birden Fazla Tablodan Listeleme Yapmak

ETarihli Fonksiyonu

Bir Ürünün En Son Tarihli Fiyatının Bulunması