Tarih alanında gün bazından toplam aldırmak

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Tarih alanında gün bazından toplam aldırmak

Mesaj gönderen conari »

Arkadaşlar S.A
tablo;
ürün, tarih, miktar, şeklinde ise
burada ben bu üründen hangi gün kaçtane miktar olmuş onu görmek istiyorum.

Kod: Tümünü seç

select ürün, tarih,sum(miktar) from tablom where tarih='01.01.2007' group by ürün, tarih
burada tek günü aldım. Benim istediğim her tarihi aynı anda almak yani

ürün -01.01.2007-02.01.2007-03.1.2007
X - 5 - 8 - 15
v.s. şeklinde gidecek.
bunun için tarihi içiçe select ile tek tek yazarak alabiliriz yoksa başka bir metodu varmıdır.? (where komutunda month(tarih)=1 kısıtıda vereceğim)
:roll:
İyi çalışmalar
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
günler sütun mu olacak yoksa satırmı?

mssqlde fazla iyi sayılmam ama
sp ile yapılabilir gibime geldi.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şuna benzer bir kod olabilir mi?

Kod: Tümünü seç

SELECT
  URUN,
  SUM(CASE WHEN DAY(TARIH) = 1 THEN MIKTAR ELSE 0 END) AS GUN_01,
  SUM(CASE WHEN DAY(TARIH) = 2 THEN MIKTAR ELSE 0 END) AS GUN_02,
  SUM(CASE WHEN DAY(TARIH) = 3 THEN MIKTAR ELSE 0 END) AS GUN_03,
  .
  .
  .
  SUM(CASE WHEN DAY(TARIH) = 31 THEN MIKTAR ELSE 0 END) AS GUN_31
FROM TABLOM
WHERE YEAR(TARIH) = 2007 AND MONTH(TARIH) = 1
GROUP BY URUN
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

aslangeri yazdı:s.a.
günler sütun mu olacak yoksa satırmı?

mssqlde fazla iyi sayılmam ama
sp ile yapılabilir gibime geldi.
kolay gelsin.
S.A.
Kusura bakma cevabı ancak şimdi verebiliyorum. Sütun olacak yani
fieldler gün ismi ile gidecek

yani ürün,(1,31)gün şeklinde,

@Hakan Dediğin mantik oluyor. Ben Case kullanmadan yapıyorum. Ama bu günleri tektek yazmadan bir yol varmıdır diye araştırıyorum.
Teşekkürler.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Benim de ms-sql ile fazla bir tecrübem olmasa da hesaplanmış alan olarak veri tabanında gün ayrılıp tutulabiliyorsa gruplanabilir. Aşağıdaki select firebird de çalışıyor.

Kod: Tümünü seç

select tarih, extract(day from tarih), sum(miktar) from tablo
group by tarih, extract(day from tarih)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kod: Tümünü seç

select ürün, tarih,sum(miktar) from tablom where tarih='01.01.2007' group by ürün, tarih
Buradan where şartını kaldırırsan istediğin gerçekleşecektir.

Kod: Tümünü seç

select ürün, tarih,sum(miktar) from tablom group by ürün, tarih
Ayrıca FB'deki extract(day from tarih) kodun MSSQL'deki karşılığı day(tarih). :wink:
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Şaban hoca, bu benim istediğim değil,
bu tüm tarihleri toplamaz mı?
ben 1 ay için gün bazında toplam alacağım field isimleri gün gün gitmeli.

yani;

stok , ayın ilk tarihi, , ,ayın son tarihi (bunlar field isimleri)

bunların altında
stok kodu,ilk gün toplamı, , , son gün toplamı,

sonuçta illaki where koşulunda ay için kısıt vereceğim.
İnşallah anlatabilmişimdir.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Dediğiniz şekilde döküm almak için Hakan Can'ın verdiği kodu kullanmalısınız.

Kod: Tümünü seç

urun  gün miktar
bingo3  1    55
bingo3  3    73
bingo1  4    60
bingo3  5    75
şeklinde bir döküm almak isterseniz.

Kod: Tümünü seç

SELECT URUN,DAY(TARIH),SUM(MIKTAR)  
FROM CONARI20473
GROUP BY TARIH ,URUN 
HAVING MONTH(TARIH)=1 AND YEAR(TARIH)=2007
ORDER BY TARIH
şeklinde bir kod kullanabilirsiniz.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

İlgin için teşekkürler, fakat bu da işime yaramaz burada günler field isimi değil, data olarak geliyor ben günlerin herbiri için bir field oluşturmak istiyorum.Toplam stokkodu dahil aya(31 çeker ise) göre 32 adet field oluşması lazım.

yukarılarda örneklediğim gibi.
Bu şekilde alırsam üzerinde yine işlem yapmam lazım. Pivot tablo oluşturmalıyım yani..Delphide de bunun için hazır bir comp. yok. Ücretli quantum grid falan var.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Cevapla