This is a discussion on Change local variable inside query within the SQL Server forums, part of the Microsoft SQL Server category; --> /*Given*/ CREATE TABLE [_T1sub] ( [PK] [int] IDENTITY (1, 1) NOT NULL , [FK] [int] NULL , [St] [char] ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| /*Given*/ CREATE TABLE [_T1sub] ( [PK] [int] IDENTITY (1, 1) NOT NULL , [FK] [int] NULL , [St] [char] (2) NULL , [Wt] [int] NULL , CONSTRAINT [PK__T1sub] PRIMARY KEY CLUSTERED ( [PK] ) ON [PRIMARY] ) ON [PRIMARY] GO INSERT INTO _T1sub (FK,St,Wt) VALUES (1,'id',10) INSERT INTO _T1sub (FK,St,Wt) VALUES (2,'nv',20) INSERT INTO _T1sub (FK,St,Wt) VALUES (3,'wa',30) /* Is something like the following possible. The point is to change the value of the variable inside the query and use it in the calculated field. This doesn't compile of course, but is there a way to accomplish the same thing? */ DECLARE @ndx int SET @ndx = 1 SELECT (a.FK+ (CASE WHEN @ndx > 0 THEN (SELECT @ndx = b.Wt FROM _T1sub b WHERE b.Wt = a.Wt) ELSE 0 END) ) as FKplusWT FROM _T1sub a /*Output would look like this:*/ FKplusWT ----------- 11 22 33 /* I know, I can get this output just by adding FK+WT. This is not about that. This is about setting vars inside a query */ thanks, Otto Porter |
| ||||
| On Sat, 02 Oct 2004 12:20:48 -0600, Otto Porter wrote: >I know, I can get this output just by adding >FK+WT. This is not about that. >This is about setting vars inside a query Hi Otto, It's not possible to change the value of a variable during the execution of a SELECT statement. At least not the way you are trying to do it. You can of course do SELECT @var = ..., @var = ... FROM table WHERE ... but I assume that this is not what you want. You can't mix this format of the SELECT statement with a SELECT that outputs a result set. The way I read your example, it would be very easy to have queries where the result would be dependent on the order in which rows are processed by SQL Server. Since SQL Server is entirely free in it's choice of processing order, the results would be unexpected and might even vary from execution to execution. Check out the following link to find some good examples of the possible effects of unexpected processing order on assignments with the SELECT statement: http://groups.google.com/groups?hl=e...TNGP12.phx.gbl Best, Hugo -- (Remove _NO_ and _SPAM_ to get my e-mail address) |