<?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>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2127.aspx</link><pubDate>Wed, 20 Jun 2007 09:28:24 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2127</guid><dc:creator>ssandu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2127.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2127</wfw:commentRss><description>&lt;P&gt;Exact asta era&lt;/P&gt;
&lt;P&gt;In timp ce tot testam pe bucati am pus GO din loc in loc dar la final am uitat sa le scot.&lt;/P&gt;
&lt;P&gt;Multumesc ptr raspunsuri.&lt;/P&gt;</description></item><item><title>Re: CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2126.aspx</link><pubDate>Wed, 20 Jun 2007 09:07:27 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2126</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2126.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2126</wfw:commentRss><description>&lt;p&gt;Incearca sa comentezi statementurile "GO". Variabilele sunt "valabile" doar in batch-ul curent.&lt;/p&gt;&lt;p&gt;De asemenea, in penultimul rand, incearca "@explicatii AS explic,"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2125.aspx</link><pubDate>Wed, 20 Jun 2007 09:00:05 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2125</guid><dc:creator>ssandu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2125.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2125</wfw:commentRss><description>&lt;P&gt;Asta e procedura.&lt;/P&gt;
&lt;P&gt;Daca inlocuiesc variabilele cu valori merge perfect.&lt;/P&gt;
&lt;P&gt;Cred ca-mi scapa ceva acum.&lt;/P&gt;
&lt;P&gt;SET ANSI_NULLS ON&lt;BR&gt;GO&lt;BR&gt;SET QUOTED_IDENTIFIER ON&lt;BR&gt;GO&lt;BR&gt;-- =============================================&lt;BR&gt;-- Author:&amp;nbsp;&amp;nbsp;&amp;lt;Author,,Name&amp;gt;&lt;BR&gt;-- Create date: &amp;lt;Create Date,,&amp;gt;&lt;BR&gt;-- Description:&amp;nbsp;&amp;lt;Description,,&amp;gt;&lt;BR&gt;-- =============================================&lt;BR&gt;CREATE PROCEDURE dbo.Nota_Inchidere &lt;BR&gt;&amp;nbsp;@data1 smalldatetime, @data2 smalldatetime, @nr int, @explicatii varchar(50)&lt;BR&gt;AS&lt;BR&gt;BEGIN&lt;BR&gt;&amp;nbsp;SET NOCOUNT ON;&lt;BR&gt;&amp;nbsp;DELETE FROM notainchidere;&lt;BR&gt;&amp;nbsp;INSERT INTO notaInchidere (credit, sumacredit)&lt;BR&gt;&amp;nbsp;&amp;nbsp;SELECT credit, sum(suma) AS sumacredit FROM note_contabile &lt;BR&gt;&amp;nbsp;&amp;nbsp;WHERE (data BETWEEN @data1 AND @data2) AND (LEFT(credit,1) = '6' OR LEFT(credit,1)='7')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP BY credit;&lt;BR&gt;&amp;nbsp;GO&amp;nbsp;&lt;BR&gt;&amp;nbsp;WITH rulajD (debit, suma) AS &lt;BR&gt;&amp;nbsp;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;SELECT debit, sum(suma) AS suma FROM note_contabile &lt;BR&gt;&amp;nbsp;&amp;nbsp;WHERE (data BETWEEN @data1 AND @data2) AND (LEFT(debit,1) = '6' OR LEFT(debit,1)='7')&lt;BR&gt;&amp;nbsp;&amp;nbsp;GROUP BY debit&lt;BR&gt;&amp;nbsp;) &lt;/P&gt;
&lt;P&gt;&amp;nbsp;UPDATE notainchidere SET sumadebit = rulajd.suma FROM notainchidere LEFT JOIN rulajD&lt;BR&gt;&amp;nbsp;&amp;nbsp;ON notainchidere.credit = rulajd.debit;&lt;BR&gt;&amp;nbsp;GO&lt;BR&gt;&amp;nbsp;WITH rulajD (debit, suma) AS &lt;BR&gt;&amp;nbsp;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;SELECT debit, sum(suma) AS suma FROM note_contabile &lt;BR&gt;&amp;nbsp;&amp;nbsp;WHERE (data BETWEEN @data1 AND @data2) AND (LEFT(debit,1) = '6' OR LEFT(debit,1)='7')&lt;BR&gt;&amp;nbsp;&amp;nbsp;GROUP BY debit&lt;BR&gt;&amp;nbsp;) &amp;nbsp;&lt;BR&gt;&amp;nbsp;INSERT INTO notainchidere (debit, sumadebit) &lt;BR&gt;&amp;nbsp;SELECT debit, suma FROM rulajD WHERE rulajD.debit NOT IN (SELECT credit FROM notainchidere);&lt;BR&gt;&amp;nbsp;GO&lt;BR&gt;&amp;nbsp;UPDATE notainchidere SET suma = sumadebit - ISNULL(sumacredit,0), credit = &lt;BR&gt;&amp;nbsp;CASE&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(debit,5,2)='01' THEN '121001'&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(debit,5,2)='02' THEN '121010'&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(debit,5,2)='03' THEN '121011'&lt;BR&gt;&amp;nbsp;&amp;nbsp;END&lt;BR&gt;&amp;nbsp;WHERE LEFT(debit,1) = '6';&lt;BR&gt;&amp;nbsp;GO&lt;BR&gt;&amp;nbsp;UPDATE notainchidere SET suma = sumacredit - ISNULL(sumadebit,0), debit = &lt;BR&gt;&amp;nbsp;CASE&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(credit,1,4)='7701' THEN '121001'&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(credit,1,4)='7650' THEN '121001'&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(credit,1,4)='7511' THEN '121010'&lt;BR&gt;&amp;nbsp;&amp;nbsp;WHEN Substring(credit,1,4)='7790' THEN '121011'&lt;BR&gt;&amp;nbsp;&amp;nbsp;END&lt;BR&gt;&amp;nbsp;WHERE LEFT(debit,1) &amp;lt;&amp;gt; '6';&lt;BR&gt;&amp;nbsp;GO&lt;BR&gt;&amp;nbsp;UPDATE NotaInchidere SET data = @data2&lt;BR&gt;&amp;nbsp;INSERT INTO note_contabile&lt;BR&gt;&amp;nbsp;&amp;nbsp;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nr,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;data,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;explicatii,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;debit,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;credit,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;suma&lt;BR&gt;&amp;nbsp;&amp;nbsp;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT @nr AS nr, 'Nota inchidere' AS document, data, @explic AS explicatii, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debit AS credit, credit AS debit, suma FROM notainchidere&lt;BR&gt;END&lt;BR&gt;GO&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Re: CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2124.aspx</link><pubDate>Wed, 20 Jun 2007 07:58:03 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2124</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2124.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2124</wfw:commentRss><description>&lt;p&gt;Probabil ai un "typo" - vezi de exemplu daca numele parametrului procedurii este altul decat numele parametrului din WHERE.&lt;/p&gt;&lt;p&gt;Mie mi-a "mers" asa:&lt;/p&gt;&lt;p&gt;CREATE PROCEDURE SelectProduct&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; @ProductID int&lt;/p&gt;&lt;p&gt;&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH prods AS (SELECT * FROM dbo.Product WHERE ProductID = @ProductID)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT * FROM prods&lt;/p&gt;&lt;p&gt;END &lt;br&gt;
&lt;/p&gt;</description></item><item><title>Re: CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2123.aspx</link><pubDate>Wed, 20 Jun 2007 07:52:54 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2123</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2123.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2123</wfw:commentRss><description>&lt;p&gt;Da, se poate. Uite un exemplu cât de cât interesant:&lt;/p&gt;&lt;p&gt;USE AdventureWorks&lt;br&gt;GO&lt;br&gt;CREATE FUNCTION MonthlySalesForAProduct(@ProductID int)&lt;br&gt;RETURNS TABLE AS RETURN&lt;br&gt;WITH TotalSalesForAProduct AS (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT YEAR(OrderDate) as Y, MONTH(OrderDate) as M, SUM(OrderQty) as Qty&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM Sales.SalesOrderHeader h&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN Sales.SalesOrderDetail d ON h.SalesOrderID=d.SalesOrderID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE d.ProductID=@ProductID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GROUP BY YEAR(OrderDate), MONTH(OrderDate)&lt;br&gt;)&lt;br&gt;SELECT a.Y, a.M, a.Qty, b.Qty as PrevQty, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(numeric(10,2),100.*(a.Qty-b.Qty)/b.Qty) as PercentChange&lt;br&gt;FROM TotalSalesForAProduct a LEFT JOIN TotalSalesForAProduct b&lt;br&gt;ON a.Y*12+a.M=b.Y*12+b.M+1&lt;br&gt;--ORDER BY Y, M&lt;br&gt;&lt;br&gt;GO&lt;br&gt;SELECT * FROM MonthlySalesForAProduct(761) ORDER BY Y, M&lt;/p&gt;&lt;p&gt;Am preferat să fac o funcţie, ca să pot să refolosesc rezultatul în alte query-uri, dar se putea utiliza un parametru într-un CTE şi dacă era procedură stocată.&lt;/p&gt;&lt;p&gt;Dacă ai probleme, postează codul pe care l-ai scris (cu structura tabelelor, câteva date de test şi rezultatele dorite).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Răzvan&lt;/p&gt;</description></item><item><title>CTE cu variabile</title><link>http://sqlserver.ro/forums/thread/2122.aspx</link><pubDate>Wed, 20 Jun 2007 07:28:23 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:2122</guid><dc:creator>ssandu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/2122.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=2122</wfw:commentRss><description>&lt;P&gt;Poate CTE lucra cu variabile ?&lt;/P&gt;
&lt;P&gt;Am o procedura care contine cateva CTE&lt;/P&gt;
&lt;P&gt;Procedura primeste 2 parametri pe care vreau sa-i folosesc in CTE&lt;/P&gt;
&lt;P&gt;Primesc eroarea in CTE "Must declare the scalar variable @data1"&lt;/P&gt;
&lt;P&gt;multumesc&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>