Showing posts with label condition. Show all posts
Showing posts with label condition. Show all posts

Sunday, March 25, 2012

Queries in While Condition

When using a query in the condition of a while loop, is that query being performed each time?
EX:
While (@.X <= (Select count(*) from SOME_TABLE))I was going to say no...but...

USE Northwind
GO

SET NOCOUNT ON
CREATE TABLE myTable99(Col1 int IDENTITY(1,1), Col2 char(1))
GO

INSERT INTO myTable99(Col2)
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'C' UNION ALL
SELECT 'D' UNION ALL
SELECT 'E'
GO

DECLARE @.x int
SELECT @.x = 1
WHILE @.x < (SELECT COUNT(*) FROM myTable99)
BEGIN
SELECT @.x = @.x + 1
END
SELECT @.x

SELECT @.x = 1
WHILE @.x < (SELECT COUNT(*) FROM myTable99)
BEGIN
IF @.x IN (1,3,5) INSERT INTO myTable99(Col2) SELECT 'x'
SELECT @.x = @.x + 1
END
SELECT @.x
GO

SET NOCOUNT OFF
DROP TABLE myTable99
GO

Thursday, February 9, 2012

(sub)case syntax Question

Hi,

How can i perform a subcase ? I need to do a subcase because when a choose one condition (cdu_integrador='1'), there is another variable that could influence the result of cdu_parcerias (tipoterceiro ='TP' or not).

I've tried 2 ways , one using "AND" on the WHEN line (when 1 and terceiro=....) and use cascading case (when 1 (case tipoterceiro when 'TP'..)..) ... both ways didnt worked...

i get a

Incorrect syntax near the keyword 'CASE'.

ANY IDEA ?

CDU_PARCERIAS =

CASE CDU_INTEGRADOR

WHEN '1' AND TIPOTERCEIRO<>'TP' THEN TIPOTERCEIRO+' + TP'

ELSE TIPOTERCEIRO

END

CDU_PARCERIAS =

CASE CDU_INTEGRADOR

WHEN '1'

CASE TIPOTERCEIRO

WHEN 'TP' THEN TIPOTERCEIRO

ELSE TIPOTERCEIRO+' + TP'

END

ELSE TIPOTERCEIRO

END

Try it like:

CDU_PARCERIAS =
CASE WHEN CDU_INTEGRADOR = '1'
AND TIPOTERCEIRO <> 'TP'
THEN TIPOTERCEIRO + ' + TP'
ELSE TIPOTERCEIRO
END

|||

Use as follow as,

CDU_PARCERIAS =

CASE CDU_INTEGRADOR

WHEN '1' THEN

CASE TIPOTERCEIRO

WHEN 'TP' THEN TIPOTERCEIRO

ELSE TIPOTERCEIRO +' + TP'

END

ELSE TIPOTERCEIRO

END