Access Sorguda Yürüyen Bakiye

1 2 3 4 5 6
24/12/2021, 00:26

hedefkaya

örnek ekledim kontrol edermisin
24/12/2021, 00:35

berduş

servera View ekleyip onun üzerinden toplam almayı yaptım ama sıralamayı sormam gerek,
row number oluşturmak için tablonuzdaki hangi alanlara göre sıralama yapılmalı?
ben sıralamayı
CAST(ROW_NUMBER() OVER(ORDER BY #msg_s_0085,msg_s_0098) as int) AS xRow 
ben sıralamayı #msg_s_0085,msg_s_0098 alanlarına göre yaptım ilk alan yanılmıyorsam kullanıcı adı 2. alan ise işlem tarihi sıralama doğru mu?
24/12/2021, 10:50

dogan.importexport

(24/12/2021, 00:35)berduş yazdı: servera View ekleyip onun üzerinden toplam almayı yaptım ama sıralamayı sormam gerek,
row number oluşturmak için tablonuzdaki hangi alanlara göre sıralama yapılmalı?
ben sıralamayı
CAST(ROW_NUMBER() OVER(ORDER BY #msg_s_0085,msg_s_0098) as int) AS xRow 
ben sıralamayı #msg_s_0085,msg_s_0098 alanlarına göre yaptım ilk alan yanılmıyorsam kullanıcı adı 2. alan ise işlem tarihi sıralama doğru mu?

Doğru üstadım 2.ci alan tarih
saygılar

(24/12/2021, 00:26)hedefkaya yazdı: örnek ekledim  kontrol edermisin

Üstadım Benzersiz ID değişince bakiye kısmını hatalı hale getiriyor. Ben serverde benzersiz alan varsa onuda bakacağım tabloyu tekrar göndereceğim
Saygılar
24/12/2021, 10:55

berduş

Benzersiz id'in işlem sırasına göre olması önemli
Uygun bir zamanda ad ve tarihe gore rownumber ekleyerek View oluşturma kodunu gönderirim işlemi ona gore yaparix
24/12/2021, 12:28

berduş

öncelikle Sql serverı açıp veritabanını seçin -->New Query'ye basıp yeni sorgu oluşturma penceresini açıp aşağıdaki kodu yazın
Not ben verdiğiniz adlara göre yaptım siz kendi çalışmanızdaki/serverdaki adları kullanmalısınız
CREATE VIEW view_SQLKASA1
AS
select *, CAST(ROW_NUMBER() OVER(ORDER BY #msg_s_0085,msg_s_0098) as int) AS xRow
from [SQLKASA1]
bu kodu seçip F5'e bastığınızda view_SQLKASA1 adında bir view oluşur
access veri tabanınıza bu Viewi bağlayın
Accesste yeni bir sorgu oluşturup sorgu koduna aşağıdaki kodu yazın
SELECT A.[#msg_S_0200], A.[#msg_S_0201], A.msg_S_0089, A.msg_S_0090, A.msg_S_0091, A.msg_S_0094, A.msg_S_0003, A.[#msg_S_0085], (select sum(dbo_view_SQLKASA1.[msg_S_0101\T])-sum(dbo_view_SQLKASA1.[msg_S_0102\T]) from dbo_view_SQLKASA1 where  dbo_view_SQLKASA1.[#msg_S_0085]=A.[#msg_S_0085] and  dbo_view_SQLKASA1.[xRow]<=A.[xRow]) AS Bakiye, A.[msg_S_0101\T], A.[msg_S_0102\T], A.xRow
FROM dbo_view_SQLKASA1 AS A
WHERE (((A.[#msg_S_0200])="100.01"))
ORDER BY A.xRow;

CAST(ROW_NUMBER() OVER(ORDER BY #msg_s_0085,msg_s_0098) as int) bu kod satır numarsını sayısal yapmak için kullanılıyor eğer tablonuzda int sınırını aşan miktarda veri varsa as int yerine daha büyük bir tür de seçilebilir. serverlardan çok anlamam o nedenle hatalı olabilirim
24/12/2021, 15:57

berduş

şimdi fark ettim hem msg_S_0115 alanında hem de #msg_s_0085 alanlarında isim var ayrıca bir kaç farklı yerde de tarih alanı var
bakiye hangi alanlara göre alınacak? Müşteri kimliği hangi alan işlem tarihi yada sıralama alanı hangi alan?
1 2 3 4 5 6