<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Intrebari generale</title><link>http://sqlserver.ro/forums/16/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2100.aspx</link><pubDate>Thu, 14 Jun 2007 09:10:40 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2100</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2100.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2100</wfw:commentRss><description>este perfect! multumesc mult!</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2099.aspx</link><pubDate>Thu, 14 Jun 2007 08:26:35 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2099</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2099.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2099</wfw:commentRss><description>&lt;p&gt;Hai să vedem, care-i problema: tu vrei o "chestie" (query/procedură/funcţie) care să-ţi dea soldul unui cont la o anumită dată (să zicem că e vorba de o singură valoare, dacă e debitor cu +, dacă e creditor cu -), deci:&lt;/p&gt;&lt;p&gt;&lt;b&gt;CREATE FUNCTION SoldCont(@Cont varchar(20), @Data smalldatetime)&lt;br&gt;RETURNS money AS BEGIN&lt;br&gt;...&lt;/b&gt;&lt;/p&gt;&lt;p&gt;şi ne interesează să luăm soldul iniţial:&lt;/p&gt;&lt;p&gt;&lt;b&gt;...&lt;br&gt;DECLARE @Sold money&lt;br&gt;SELECT @Sold=SoldDebitor-SoldCreditor FROM SolduriInitiale&lt;br&gt;WHERE An=YEAR(@Data) AND Cont=@Cont&lt;br&gt;...&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;(atenţie: dacă nu găseşte contul respectiv în soldurile iniţiale, atunci în variabila @Sold rămâne NULL)&lt;/p&gt;&lt;p&gt;apoi vrem să adunăm rulajul debitor, adică valoarea înregistrărilor contabile care au contul respectiv pe debit, de la începutul anului până la data respectivă, inclusiv:&lt;/p&gt;&lt;p&gt;&lt;b&gt;...&lt;br&gt;SET @Sold=ISNULL(@Sold,0) + ISNULL((&lt;br&gt;&amp;nbsp; SELECT SUM(Valoare) FROM NoteContabile&lt;br&gt;&amp;nbsp; WHERE ContDebitor=@Cont AND Data&amp;lt;=@Data AND YEAR(Data)=YEAR(@Data)&lt;br&gt;&amp;nbsp;),0)&lt;br&gt;...&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;iar apoi să scădem rulajul creditor (nu mai scriu cum, că e evident). La sfârşit, returnăm valoarea obţinută:&lt;/p&gt;&lt;p&gt;&lt;b&gt;...&lt;br&gt;RETURN @Sold&lt;br&gt;END&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Dacă vrem să folosim un singur query, funcţia noastră ar arăta aşa:&lt;/p&gt;&lt;p&gt;&lt;b&gt;CREATE FUNCTION SoldCont(@Cont varchar(20), @Data smalldatetime)&lt;br&gt;
RETURNS money AS BEGIN&lt;br&gt;&amp;nbsp;RETURN ISNULL((&lt;br&gt;&amp;nbsp; SELECT SoldDebitor-SoldCreditor FROM SolduriInitiale&lt;br&gt;&amp;nbsp; WHERE An=YEAR(@Data) AND Cont=@Cont&lt;br&gt;&amp;nbsp;),0)+ISNULL((&lt;br&gt;

&amp;nbsp; SELECT SUM(Valoare) FROM NoteContabile&lt;br&gt;

&amp;nbsp; WHERE ContDebitor=@Cont AND Data&amp;lt;=@Data AND YEAR(Data)=YEAR(@Data)&lt;br&gt;

&amp;nbsp;),0)-ISNULL((&lt;br&gt;
&amp;nbsp; SELECT SUM(Valoare) FROM NoteContabile&lt;br&gt;
&amp;nbsp; WHERE ContCreditor=@Cont AND Data&amp;lt;=@Data AND YEAR(Data)=YEAR(@Data)&lt;br&gt;
&amp;nbsp;),0)&lt;br&gt;END&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Această funcţie ar putea fi apelată astfel:&lt;br&gt;&lt;b&gt;SELECT dbo.SoldCont('5311', '20070515')&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Dacă-ţi vine cumva ideea să apelezi această funcţie aşa:&lt;br&gt;&lt;b&gt;SELECT dbo.SoldCont(Cont, '20070630') FROM PlanulDeConturi&lt;/b&gt;&lt;br&gt;să ştii că nu e o idee bună, pentru că se apelează funcţia respectivă în mod repetat şi face mult mai multe citiri ale tabelei NoteContabile decât e necesar. Dacă ai nevoie de soldurile tuturor conturilor, cel mai bine e să faci cu GROUP BY şi OUTER JOIN-uri, aşa cum am făcut mai demult.&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;&lt;p&gt;PS: n-am testat nimic... te las pe tine să verifici dacă e vreo greşeală de sintaxă sau de altă natură...&lt;br&gt;&lt;/p&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2098.aspx</link><pubDate>Thu, 14 Jun 2007 07:48:18 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2098</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2098.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2098</wfw:commentRss><description>HEEELP!</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2087.aspx</link><pubDate>Wed, 13 Jun 2007 11:20:24 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2087</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2087.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2087</wfw:commentRss><description>&lt;P&gt;Offf, dupa ce am terminat cu balanta, am reluat codul scris (ca tot m-ati obisnuit cu fineturi sql!) sa incerc sa-l mai optimizez putin. Asa am ajuns la o alta problema cu care ma lupt de 2 zile....cum sa obtin soldul&amp;nbsp;pt un cont la o anumita data! &lt;BR&gt;Deci: trebuie sa gasesc soldul contului 5311 la data 15.05.2006. In tabela SOLDURI_INITIALE am la anul 2006 sold debitor la 1 ian pt 5311 = &amp;nbsp;53 RON. Apoi trebuie sa caut notele din tabela NOTE_CONTABILE care indeplinesc conditia de cont si sa adun/scad la rulaj valoarea initiala. Cum se poate face asta mai elegant? E drept ca abia am ajuns la jumatate cu cititul in 'Beginning SQL Server 2005 Programming', dar nu reusesc sa fac singur interogarea...&lt;/P&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2064.aspx</link><pubDate>Sun, 10 Jun 2007 10:24:57 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2064</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2064.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2064</wfw:commentRss><description>&lt;P&gt;BELEA!!! acum am constatat ca de fapt tot nu e bine.....nu se ia in considerare la calculul soldurilor finale daca contul este pasiv, activ sau bi.... Eu am in tabela PLAN_CONTURI si o coloana TIP in care am aceasta informatie, mai ramine sa vad daca ma descurc singur sa o folosesc!&lt;/P&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2063.aspx</link><pubDate>Sat, 09 Jun 2007 17:08:39 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2063</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2063.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2063</wfw:commentRss><description>da, e ok acum! Multumesc! Deci avem acum descris pas cu pas, de la A la Z cum se poate intocmi o balanta! Poate mai sint si altii interesati!</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2060.aspx</link><pubDate>Fri, 08 Jun 2007 19:59:02 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2060</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2060.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2060</wfw:commentRss><description>&lt;p&gt;Oops... ai dreptate, mi-a scăpat. În loc de:&lt;/p&gt;&lt;p&gt;[...]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM SOLDURI_INITIALE S&lt;br&gt;[...]&lt;/p&gt;&lt;p&gt;ar fi trebuit să fie:&lt;/p&gt;&lt;p&gt;[...]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONT, SOLD_DEBITOR, SOLD_CREDITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM SOLDURI_INITIALE WHERE AN=2006&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) S&lt;br&gt;
[...]&lt;/p&gt;&lt;p&gt;Răzvan&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2059.aspx</link><pubDate>Fri, 08 Jun 2007 19:37:41 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2059</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2059.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2059</wfw:commentRss><description>este ok acum! am mai bagat un JOIN cu tabela PLAN_CONTURI pt ca imi trebuia si explicatia aferenta fiecarui cont din balanta. Acum arata asa cum vreau! Dar am descoperit o chestie.... Daca am adaugat "where an=2006" inainte de ")X" (pt a putea specifica anul) am observat ca e necesar ca in tabela SOLDURI_INITIALE sa existe anterior toate conturile din planul de conturi care au miscare in acel an....altfel, normal dealtfel!, conturile respective lipsesc din balanta... Exista o alta posibilitate de a alege soldurile de pornire ale unui an si altfel decit am facut eu dar totusi, sa apara toata conturile in balanta chiar daca ele nu se regasesc si in SOLDURI_INITIALE? Sper ca am explicat cit de cit 'citet' ce vreau.....</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2041.aspx</link><pubDate>Thu, 07 Jun 2007 05:14:34 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2041</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2041.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2041</wfw:commentRss><description>&lt;p&gt;Erai destul de aproape:&lt;/p&gt;&lt;p&gt;SELECT CONT, RULAJ_INITIAL_DEBITOR, RULAJ_INITIAL_CREDITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RULAJ_CURENT_DEBITOR, RULAJ_CURENT_CREDITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RULAJ_TOTAL_DEBITOR, RULAJ_TOTAL_CREDITOR,&lt;br&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CASE WHEN RULAJ_TOTAL_DEBITOR&amp;gt;RULAJ_TOTAL_CREDITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN RULAJ_TOTAL_DEBITOR-RULAJ_TOTAL_CREDITOR &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE 0 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END AS SOLD_DEBITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CASE WHEN RULAJ_TOTAL_CREDITOR&amp;gt;RULAJ_TOTAL_DEBITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN RULAJ_TOTAL_CREDITOR-RULAJ_TOTAL_DEBITOR &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE 0 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END AS SOLD_CREDITOR&lt;/b&gt;&lt;br&gt;&lt;b&gt;FROM (&lt;br&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT &lt;b&gt;COALESCE(S.CONT, D.CONT, C.CONT, A.CONT, B.CONT)&lt;/b&gt; AS CONT,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_DEBITOR,0)+ISNULL(D.RULAJ_INITIAL_DEBITOR,0) AS &lt;b&gt;RULAJ_INITIAL_DEBITOR&lt;/b&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_CREDITOR,0)+ISNULL(C.RULAJ_INITIAL_CREDITOR,0) AS &lt;b&gt;RULAJ_INITIAL_CREDITOR&lt;/b&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(A.RULAJ_CURENT_DEBITOR,0) AS RULAJ_CURENT_DEBITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(B.RULAJ_CURENT_CREDITOR,0) AS RULAJ_CURENT_CREDITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_DEBITOR,0)+ISNULL(D.RULAJ_INITIAL_DEBITOR,0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +ISNULL(A.RULAJ_CURENT_DEBITOR,0) AS &lt;b&gt;RULAJ_TOTAL_DEBITOR&lt;/b&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_CREDITOR,0)+ISNULL(C.RULAJ_INITIAL_CREDITOR,0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +ISNULL(B.RULAJ_CURENT_CREDITOR,0) AS &lt;b&gt;RULAJ_TOTAL_CREDITOR&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM SOLDURI_INITIALE S&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTDB AS CONT, SUM(LEI) AS RULAJ_INITIAL_DEBITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC BETWEEN '20070101' AND '20070131' GROUP BY CONTDB&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) D ON S.CONT=D.CONT&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTCR AS CONT, SUM(LEI) AS RULAJ_INITIAL_CREDITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC BETWEEN '20070101' AND '20070131' GROUP BY CONTCR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) C ON C.CONT=ISNULL(S.CONT,D.CONT)&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTDB AS CONT, SUM(LEI) AS RULAJ_CURENT_DEBITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC BETWEEN '20070201' AND '20070228' GROUP BY CONTDB&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) A ON A.CONT=&lt;b&gt;COALESCE(S.CONT,D.CONT,C.CONT)&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTCR AS CONT, SUM(LEI) AS RULAJ_CURENT_CREDITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC BETWEEN '20070201' AND '20070228' GROUP BY CONTCR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) B ON B.CONT=&lt;b&gt;COALESCE(S.CONT,D.CONT,C.CONT,A.CONT)&lt;/b&gt;&lt;br&gt;&lt;b&gt;) X&lt;/b&gt;&lt;br&gt;ORDER BY CONT&lt;br&gt;&lt;/p&gt;&lt;p&gt;Răzvan&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2040.aspx</link><pubDate>Wed, 06 Jun 2007 21:43:43 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2040</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2040.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2040</wfw:commentRss><description>&lt;P&gt;Da, este bestial! Intre timp, am reusit sa generez toate cele 8 coloane ale balantei, dar mai 'babeste'! Evident, cind am vazut simplitatea si rapiditatea solutiei date de tine am hotarit sa fac asa! Problema e ca am facut asa:&lt;BR&gt;SELECT COALESCE(S.CONT, D.CONT, A.CONT, B.CONT) AS CONT, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_DEBITOR,0)+ISNULL(D.RULAJ_DEBITOR,0) AS RULAJ_TOTAL_DEBITOR,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_CREDITOR,0)+ISNULL(C.RULAJ_CREDITOR,0) AS RULAJ_TOTAL_CREDITOR,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(A.RULAJ_CURENT_DEBITOR,0) AS RULAJ_CURENT_DEBITOR,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(B.RULAJ_CURENT_CREDITOR,0) AS RULAJ_CURENT_CREDITOR,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_DEBITOR,0)+ISNULL(D.RULAJ_DEBITOR,0)+ISNULL(A.RULAJ_CURENT_DEBITOR,0) AS TOTAL_DEBITOR,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_CREDITOR,0)+ISNULL(C.RULAJ_CREDITOR,0)+ISNULL(B.RULAJ_CURENT_CREDITOR,0) AS TOTAL_CREDITOR&lt;BR&gt;FROM&amp;nbsp;SOLDURI_INITIALE S&lt;/P&gt;
&lt;P&gt;FULL OUTER JOIN (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTDB AS CONT, SUM(LEI) AS RULAJ_DEBITOR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE WHERE DATADOC BETWEEN '20070101' AND '20070131' GROUP BY CONTDB&lt;BR&gt;) D ON S.CONT=D.CONT&lt;/P&gt;
&lt;P&gt;FULL OUTER JOIN (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTCR AS CONT, SUM(LEI) AS RULAJ_CREDITOR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE WHERE DATADOC BETWEEN '20070101' AND '20070131' GROUP BY CONTCR&lt;BR&gt;) C ON C.CONT=ISNULL(S.CONT,D.CONT)&lt;/P&gt;
&lt;P&gt;FULL OUTER JOIN (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTDB AS CONT, SUM(LEI) AS RULAJ_CURENT_DEBITOR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE WHERE DATADOC BETWEEN '20070201' AND '20070228' GROUP BY CONTDB&lt;BR&gt;) A ON A.CONT=ISNULL(S.CONT,D.CONT)&lt;/P&gt;
&lt;P&gt;FULL OUTER JOIN (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTCR AS CONT, SUM(LEI) AS RULAJ_CURENT_CREDITOR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE WHERE DATADOC BETWEEN '20070201' AND '20070228' GROUP BY CONTCR&lt;BR&gt;) B ON B.CONT=ISNULL(S.CONT,C.CONT)&lt;BR&gt;ORDER BY CONT&lt;/P&gt;
&lt;P&gt;dar imi dubleaza unele inregistrari, adica imi apar de 2 ori conturile care au rulaj curent si pe debit si pe credit...cele care au numai debit sau numai credit ies bine... O alta nelamurire ar fi: cum pot sa atribui un alias cirnatului de operatii (cum este de ex TOTAL_CREDITOR) pt a putea sa fac mai usor operatiile de verificare si scadere necesare generarii coloanelor de sold final debitor/creditor?&lt;/P&gt;
&lt;P&gt;Multam pt timpul pierdut cu mine!&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2038.aspx</link><pubDate>Wed, 06 Jun 2007 18:23:34 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2038</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2038.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2038</wfw:commentRss><description>&lt;p&gt;Într-adevăr, la calculul balanţei e recomandabil să existe într-o tabelă măcar soldurile din fiecare an, dacă nu chiar fiecare balanţă de pe lunile anterioare (ca să nu se recalculeze totdeauna de la începutul timpurilor). Aş recomanda ca tabela cu soldurile iniţiale la începutul fiecărui an să fie o tabelă separată (în loc să ai nişte coloane în planul de conturi, cum ai zis tu). Astfel, pornind de la tabela NOTE_CONTABILE definită mai sus, să considerăm că avem şi următoarea tabelă:&lt;/p&gt;&lt;p&gt;CREATE TABLE SOLDURI_INITIALE (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONT varchar(20),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AN smallint,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SOLD_DEBITOR money NOT NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SOLD_CREDITOR money NOT NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRIMARY KEY (CONT, AN),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECK (SOLD_DEBITOR=0 OR SOLD_CREDITOR=0)&lt;br&gt;)&lt;br&gt;&lt;br&gt;INSERT INTO SOLDURI_INITIALE VALUES ('371', 2007, 5000, 0)&lt;br&gt;INSERT INTO SOLDURI_INITIALE VALUES ('401', 2007, 0, 5000)&amp;nbsp;&lt;/p&gt;&lt;p&gt;Atunci o tentativă de balanţă poate fi calculată cu următoarea funcţie:&lt;/p&gt;&lt;p&gt;CREATE FUNCTION PSEUDO_BALANTA(@Data smalldatetime)&lt;br&gt;RETURNS TABLE AS RETURN&lt;br&gt;SELECT COALESCE(S.CONT, D.CONT, C.CONT) AS Cont, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_DEBITOR,0)+ISNULL(D.RULAJ_DEBITOR,0) AS RULAJ_TOTAL_DEBITOR,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISNULL(S.SOLD_CREDITOR,0)+ISNULL(C.RULAJ_CREDITOR,0) AS RULAJ_TOTAL_CREDITOR&lt;br&gt;FROM SOLDURI_INITIALE S FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTDB AS CONT, SUM(LEI) AS RULAJ_DEBITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC&amp;lt;=@Data GROUP BY CONTDB&lt;br&gt;) D ON S.CONT=D.CONT FULL OUTER JOIN (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONTCR AS CONT, SUM(LEI) AS RULAJ_CREDITOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM NOTE_CONTABILE WHERE DATADOC&amp;lt;=@Data GROUP BY CONTCR&lt;br&gt;) C ON C.CONT=ISNULL(S.CONT,D.CONT)&lt;br&gt;&lt;/p&gt;&lt;p&gt;Caracteristica esenţială a unei balanţe este faptul că totalul sumelor debitoare este egal cu totalul sumelor creditoare, lucru care se poate verifica executând:&lt;/p&gt;&lt;p&gt;SELECT SUM(RULAJ_TOTAL_DEBITOR), SUM(RULAJ_TOTAL_CREDITOR)&lt;br&gt;FROM PSEUDO_BALANTA('20070131')&lt;/p&gt;&lt;p&gt;Am spus totuşi că e o pseudo-balanţă pentru că are doar o singură pereche de rulaje (o singură egalitate). În general, se foloseşte balanţa cu 4 egalităţi (dar există şi cu 3 sau cu 5). De obicei, în balanţa cu 4 egalităţi (pentru o lună oarecare, alta decât ianuarie) se regăsesc următoarele perechi de coloane:&lt;br&gt;-rulaje iniţiale (soldurile de la începutul anului plus cu rulajele înregistrate în lunile precedente)&lt;br&gt;-rulajele curente (suma operaţiunilor din cursul lunii respective)&lt;br&gt;-rulajele totale (rulajele iniţiale plus rulajele curente)&lt;br&gt;-soldurile finale (dacă rulajul total debitor e mai mare decât rulajul total creditor, atunci soldul debitor este  rulajul total debitor minus rulajul total creditor, iar soldul creditor este zero; în caz contrar, invers)&lt;/p&gt;&lt;p&gt;Te las pe tine să faci funcţia care returnează o balanţă adevărată (pornind de la parametrii @DataInitiala şi @DataFinala), ca exerciţiu...&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2018.aspx</link><pubDate>Mon, 04 Jun 2007 20:11:36 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2018</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2018.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2018</wfw:commentRss><description>&lt;P&gt;Of,of...nu stiam in ce ma bag.... Am vorbit cu contabila si mi-a spus ca programul de conta pe care il foloseste&amp;nbsp;la firma mea (si pe care vreau sa-l schimb, desi contabila se impotriveste!) nu face balanta bine, si face balarii daca se incearca o generare de balanta pe o luna din anii trecuti.... Atunci mi-am zis ca hai sa incerc sa fac eu balanta. Deci am pus mina pe o balanta listata si am incercat sa-i dau de cap...si cu ajutor, am reusit sa inteleg ce este pe acolo. Problema e cum naiba sa generez balanta pornind de la tabela NOTE_CONTABILE de mai sus! Se poate concepe o interogare complexa care sa genereze 'in bloc' balanta? Sau trebuie sa folosesc ceva tabele temporare? Ma ajuta si pe mine cineva cu ceva idei in directia asta? Multumesc anticipat!&lt;/P&gt;
&lt;P&gt;Later edit: de fapt, nu am idee cum ar fi mai bine: sa fac o tabela in care sa salvez rezultatul fiscal la sfirsitul fiecarui an si la generarea unei balante sa pornesc de la rezultatul anterior la care adaug rulajul curent sau de fiecare data sa incerc sa generez pornind de la intregul pachet de note contabile? Desi, cred ca e o prostie, asa cred (varianta 2) ca functioneaza actualul program de conta... Voi ce ziceti? Multam inca o data!&lt;/P&gt;
&lt;P&gt;Later-later edit: as vrea sa fac un select care sa-mi faca o suma dupa un cimp din tabela NOTE si la aceasta suma sa adauge o valoare citita dintr-o alta tabela (soldurile la 1 ianuarie)... Nu imi dau seama insa daca se poate... eu am incercat ceva de genul:&lt;BR&gt;select sum(lei) + planconturi.[2006] as lei from NOTE join planconturi on note.condb=planconturi.cont where condb='401.agora' and datadoc between '2007-01-01' and '2007-02-28' si nu vrea.... Cum pot sa fac asta?&lt;/P&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2017.aspx</link><pubDate>Mon, 04 Jun 2007 06:46:17 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2017</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2017.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2017</wfw:commentRss><description>Eu ti-as recomanda si articolele lui Itzic Ben Gan din SQL Server
Magazine, si "Inside Microsoft SQL Server 2005: T-SQL Programming" (a
aceluiasi autor). Din pacate nu am "apucat" inca sa citesc cartea, dar
articolele sunt super...&lt;br&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2016.aspx</link><pubDate>Mon, 04 Jun 2007 05:52:34 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2016</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2016.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2016</wfw:commentRss><description>&lt;p&gt;Apropos de cărţi... nu ştiu ce să zic: eu n-am citit prea multe cărţi de SQL, sunt mai mult genul "citeşte documentaţia şi încearcă singur". Dar am răsfoit într-o librărie cartea lui Ken Henderson "&lt;a href="http://www.amazon.com/Gurus-Guide-Transact-SQL-Ken-Henderson/dp/0201615762/ref=sr_1_2/104-1998713-7670305?ie=UTF8&amp;amp;s=books&amp;amp;qid=1180935550&amp;amp;sr=1-2" target="_blank"&gt;The Guru's Guide to Transact-SQL&lt;/a&gt;" şi mi s-au părut interesante multe chestii, de genul celor pe care nu le găseşti în documentaţie. A apărut şi în limba română, la Editura Teora, dar trebuie să ţii cont că e totuşi o carte destul de veche (din anul 2000), deci nu tratează noutăţile din SQL Server 2005, de exemplu. Pe de altă parte, e o carte de nivel avansat şi nu ştiu dacă ai ajuns acolo, dar poate mai au şi alţii alte recomandări. Până atunci, oricum, întreabă cu încredere pe aici, că încercăm să te ajutăm.&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>Re: Modalitate de generare a "Jurnalului de cumparari"...</title><link>http://sqlserver.ro/forums/thread/2015.aspx</link><pubDate>Sun, 03 Jun 2007 22:48:04 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2015</guid><dc:creator>ThePuiu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2015.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=2015</wfw:commentRss><description>&lt;P&gt;Multumesc de raspuns! Este exact ce vroiam!&lt;BR&gt;O alta rugaminte ar fi daca poti sa-mi recomanzi o carte pe care sa o gasesc undeva pe net sau in librarii si din care sa pot sa invat si mai mult decit cuvintele cheie din sql....pt ca se pare ca nu ajunge. Nu vreau sa tot&amp;nbsp;deranjez&amp;nbsp;in stinga si in dreapta cu intrebari stupid de simple...&amp;nbsp;Deja imi trec idei marete prin cap! Daca tot am ajuns aici cu 'programelul' de ce sa nu incerc sa-l mai dezvolt si sa imi genereze si un fel de balanta care sa ma ajute sa urmaresc mai bine clientii si furnizorii....si uite asa povestea nu se mai termina! O sa iasa un ERP pina la urma &lt;img src="http://sqlserver.ro/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/P&gt;</description></item></channel></rss>