Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

query con variables en sql server

Estas en el tema de query con variables en sql server en el foro de SQL Server en Foros del Web. hola a todos tengo un query y quiero agregar un grupo de variables que van a afectar al query este es mi query @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 04/06/2020, 15:15
 
Fecha de Ingreso: abril-2015
Mensajes: 129
Antigüedad: 5 años, 6 meses
Puntos: 0
query con variables en sql server

hola a todos tengo un query y quiero agregar un grupo de variables que van a afectar al query

este es mi query

Código SQL:
Ver original
  1. SELECT B.Part_No,
  2.         B.Name,
  3.  
  4. SUM(A.Quantity) AS 'Cantidad OK',
  5.  
  6.          ISNULL((SELECT SUM(D.Quantity) FROM Part_v_Scrap D
  7. WHERE A.Job_Key = D.Job_Key AND A.Part_Key = D.Part_Key AND CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin AND CONVERT(DATE,D.Add_Date) BETWEEN @FechaInicio AND @FechaFin),0) AS 'SCRAP',
  8.  
  9. ISNULL((SELECT SUM (COALESCE (A.Quantity, 0)) FROM Part_v_Container_Change2 AS A
  10. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  11.         AND A.Container_Status = 'Rework' AND A.Last_Action = @Linea
  12.         AND A.Active = 1 ),0)  AS 'Cantidad Retrabajo',
  13.        
  14.          ISNULL((SELECT SUM(D.Quantity) FROM Part_v_Scrap D
  15. WHERE A.Job_Key = D.Job_Key AND A.Part_Key = D.Part_Key AND CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin AND CONVERT(DATE,D.Add_Date) BETWEEN @FechaInicio AND @FechaFin),0) +
  16.         ISNULL((SELECT SUM (COALESCE (A.Quantity, 0)) FROM Part_v_Container_Change2 AS A
  17. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  18.         AND A.Container_Status = 'Rework' AND A.Last_Action = @Linea
  19.         AND A.Active = 1 ),0)  AS 'Total defectos'
  20.  
  21.  
  22. FROM Part_v_Container_Change2 A
  23.  
  24.   INNER JOIN Part_v_part B ON A.Part_Key = B.Part_Key
  25.  
  26. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  27. AND A.Location = @Linea
  28.       AND (A.Last_Action = 'Added at Container Form'
  29.         OR A.Last_Action = 'Container Full')
  30. GROUP BY b.name, b.Part_Key, b.Part_No,A.Job_Key,A.Part_Key, CONVERT(DATE,A.Change_Date),A.Container_Status

quiero agregar un grupo de variables que va a afectar a A.Location en el query dependiendo el que el usuario mande dentro del grupo de variables

por ejemplo

Grupo QUERY linea A = @lineaA Liena B = @LineaB

no se si hacerlo como un case algo asi

CASE WHEN @Linea = 'Linea_A' THEN @Linea = 'Linea-1' WHEN @Linea = 'Linea_B' THEN @Linea = 'Linea-2' ELSE result END;
  #2 (permalink)  
Antiguo 12/06/2020, 16:48
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 11 años, 10 meses
Puntos: 23
Sonrisa Respuesta: query con variables en sql server

Cita:
Iniciado por antonio_dsanchez Ver Mensaje
hola a todos tengo un query y quiero agregar un grupo de variables que van a afectar al query

este es mi query

Código SQL:
Ver original
  1. SELECT B.Part_No,
  2.         B.Name,
  3.  
  4. SUM(A.Quantity) AS 'Cantidad OK',
  5.  
  6.          ISNULL((SELECT SUM(D.Quantity) FROM Part_v_Scrap D
  7. WHERE A.Job_Key = D.Job_Key AND A.Part_Key = D.Part_Key AND CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin AND CONVERT(DATE,D.Add_Date) BETWEEN @FechaInicio AND @FechaFin),0) AS 'SCRAP',
  8.  
  9. ISNULL((SELECT SUM (COALESCE (A.Quantity, 0)) FROM Part_v_Container_Change2 AS A
  10. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  11.         AND A.Container_Status = 'Rework' AND A.Last_Action = @Linea
  12.         AND A.Active = 1 ),0)  AS 'Cantidad Retrabajo',
  13.        
  14.          ISNULL((SELECT SUM(D.Quantity) FROM Part_v_Scrap D
  15. WHERE A.Job_Key = D.Job_Key AND A.Part_Key = D.Part_Key AND CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin AND CONVERT(DATE,D.Add_Date) BETWEEN @FechaInicio AND @FechaFin),0) +
  16.         ISNULL((SELECT SUM (COALESCE (A.Quantity, 0)) FROM Part_v_Container_Change2 AS A
  17. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  18.         AND A.Container_Status = 'Rework' AND A.Last_Action = @Linea
  19.         AND A.Active = 1 ),0)  AS 'Total defectos'
  20.  
  21.  
  22. FROM Part_v_Container_Change2 A
  23.  
  24.   INNER JOIN Part_v_part B ON A.Part_Key = B.Part_Key
  25.  
  26. WHERE CONVERT(DATE,A.Change_Date) BETWEEN @FechaInicio AND @FechaFin
  27. AND A.Location = @Linea
  28.       AND (A.Last_Action = 'Added at Container Form'
  29.         OR A.Last_Action = 'Container Full')
  30. GROUP BY b.name, b.Part_Key, b.Part_No,A.Job_Key,A.Part_Key, CONVERT(DATE,A.Change_Date),A.Container_Status

quiero agregar un grupo de variables que va a afectar a A.Location en el query dependiendo el que el usuario mande dentro del grupo de variables

por ejemplo

Grupo QUERY linea A = @lineaA Liena B = @LineaB

no se si hacerlo como un case algo asi

CASE WHEN @Linea = 'Linea_A' THEN @Linea = 'Linea-1' WHEN @Linea = 'Linea_B' THEN @Linea = 'Linea-2' ELSE result END;
Deberias mandar un ejemplo mas basico o simple para poder entender , se mas practico ;)

Mmmm.. al parecer quieres hacer un query dinamico? si es asi te recomiendo pasar todo tu script en una variable varchar y ejecutar con execute(@tu_script_query)



La zona horaria es GMT -6. Ahora son las 17:13.