57 votos

sql set variable using COUNT

Estoy tratando de hacer una simple consulta a mi servidor y quiero que el resultado se almacene en la variable @times.

DECLARE @times int

SET @times = SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me'

IntelliSense dice Wrong syntax near Select

108voto

Michael Valenty Puntos 5482

Sólo necesitas paréntesis alrededor de tu selección:

SET @times = (SELECT COUNT(DidWin) FROM ...)

O puedes hacerlo así:

SELECT @times = COUNT(DidWin) FROM ...

10voto

lambacck Puntos 4955

Puede seleccionar directamente en la variable en lugar de utilizar set:

DECLARE @times int

SELECT @times = COUNT(DidWin)
FROM thetable
WHERE DidWin = 1 AND Playername='Me'

Si necesitas establecer varias variables puedes hacerlo desde el mismo select (ejemplo un poco rebuscado):

DECLARE @wins int, @losses int

SELECT @wins = SUM(DidWin), @losses = SUM(DidLose)
FROM thetable
WHERE Playername='Me'

Si eres partidario de usar set, puedes usar paréntesis:

DECLARE @wins int, @losses int

SET (@wins, @losses) = (SELECT SUM(DidWin), SUM(DidLose)
FROM thetable
WHERE Playername='Me');

1voto

James Wiseman Puntos 18347

Tú quieres:

DECLARE @times int

SELECT @times =  COUNT(DidWin)
FROM thetable
WHERE DidWin = 1 AND Playername='Me'

Tampoco necesitas la cláusula 'as'.

0voto

a1ex07 Puntos 23965

Puede utilizar SELECT como lambacck dijo o añadir paréntesis:

SET @times = (SELECT COUNT(DidWin)as "I Win"
FROM thetable
WHERE DidWin = 1 AND Playername='Me');

-1voto

Vasil Valchev Puntos 347

Si necesita imprimir el resultado con el nombre de la columna "c", o leer el resultado en su código utilizando el nombre de la columna "c":

DECLARE @c int;
SELECT c = count(*) from '%Table%' WHERE '%condition%'

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X