Problèmes lors de l'obtention d'un jeu de données à renvoyer avec une date par client dans la requête.TSQL - Retour date récente
Exigences:
- doit avoir la date récente de la transaction par la liste des clients pour les utilisateurs
- aura besoin avoir la capacité de courir à travers EXEC
actuelle Requête:
SELECT
c.client_uno
, c.client_code
, c.client_name
, c.open_date
into #AttyClnt
from hbm_client c
join hbm_persnl p on c.resp_empl_uno = p.empl_uno
where p.login = @login
and c.status_code = 'C'
select
ba.payr_client_uno as client_uno
, max(ba.tran_date) as tran_date
from blt_bill_amt ba
left outer join #AttyClnt ac on ba.payr_client_uno = ac.client_uno
where ba.tran_type IN ('RA', 'CR')
group by ba.payr_client_uno
Actuellement, cette requête produira au moins 1 ligne par client avec une date, le problème est qu'il y a des clients qui auront entre 2 et 10 dates qui leur sont associées, gonflant la table de retour à environ 30 000 rangées au lieu d'un idéaliste de 246 lignes ou moins. Lorsque j'essaie de faire max (tran_uno) pour obtenir le numéro de transaction le plus récent, j'obtiens le même résultat, certains ont une valeur et d'autres ont plusieurs valeurs.
La plus grande image a 4 autres requêtes étant effectuées en faisant d'autres parties, j'ai seulement inclus les parties qui se rapportent à la question.
Edit (2011-10-14 @ 13:45):
select
ba.payr_client_uno as client_uno
, max(ba.row_uno) as row_uno
into #Bills
from blt_bill_amt ba
inner join hbm_matter m on ba.matter_uno = m.matter_uno
inner join hbm_client c on m.client_uno = c.client_uno
inner join hbm_persnl p on c.resp_empl_uno = p.empl_uno
where p.login = @login
and c.status_code = 'C'
and ba.tran_type in ('CR', 'RA')
group by ba.payr_client_uno
order by ba.payr_client_uno
--Obtain list of Transaction Date and Amount for the Transaction
select
b.client_uno
, ba.tran_date
, ba.tc_total_amt
from blt_bill_amt ba
inner join #Bills b on ba.row_uno = b.row_uno
Pas tout à fait sûr de ce qui se passait, mais semble les tables temporaires ne sont pas du tout droit agissent. Idéalement, je disposerais de 246 lignes de données, mais avec la syntaxe de requête précédente, il produirait de 400 à 5000 lignes de données, évidemment des duplications sur des données.
Je ne pense pas que le problème est là. Ce que vous affichez ici ne renverra qu'une date par client_uno, puisque vous groupez par valeur. Peut-il y avoir des espaces dans le nom du client qui donne l'impression que le même client renvoie plusieurs dates? –
le client_uno est une valeur 'int' unique et n'a donc pas d'espace blanc ou de valeurs erronées. la valeur est contrôlée à l'arrière de l'application. – GoldBishop
Une autre remarque, dans certains cas lorsqu'on regarde l'ensemble de données résultant, certains client_uno ont un enregistrement CR & RA et d'autres ont un double enregistrement CR ou RA, et le reste est une valeur CR ou RA unique.Maintenant vous voyez le problème, ce n'est pas toujours revenir une valeur que je peux fixer le problème. Plus d'un point culminant de problèmes qui ne sont pas très cohérents sauf par le client_uno que j'interroge. – GoldBishop