quiero realizar una vista, con las siguientes sentencias:
SELECT E.destino, SUM(E.Horas) AS THoras, SUM(CASE modulo WHEN 1 THEN
e.cantidad*e.valor ELSE 0 END) AS MP,
FROM MATERIA AS E
GROUP BY E.destino
es decir, esta agrupada y unas columnas son sumas, pero, no me deja generar
una columna utilizando la sentencia CASE, pero es necesario para los
resultados.
Como puedo hacer una sentencia de condición en una columna, o que hay de
erroneo en la instrucción descrita.
Gracias de antemano...
--
Luis Alejandro Leal Rey
UDESOFT LTDA - Co.
USE Northwind
GO
SELECT OrderID, SUM(Quantity) AS Units, SUM(CASE discount WHEN 0 THEN
quantity*UnitPrice ELSE quantity*UnitPrice*(1-discount) END) AS Precio
FROM [Order details]
GROUP BY OrderID
Lo que tienes mal en tu consulta es una coma de más antes del FROM (AS MP,
en vez de AS MP). Prueba así:
SELECT E.destino, SUM(E.Horas) AS THoras, SUM(CASE modulo WHEN 1 THEN
e.cantidad*e.valor ELSE 0 END) AS MP
FROM MATERIA AS E
GROUP BY E.destino
--
Fernando G. Guerrero
SQL Server MVP
QA plc., UK
PASS Spanish Group
www.sqlserverbyexample.com
www.callsql.com
www.qa.com
"Comparte lo que sabes, aprende lo que no sepas"
Me enorgullezco de colaborar con la comunidad de usuarios de PASS (la
Asociación Profesional de SQL Server). Busca más información en:
http://www.sqlpass.org
"Luis Alejandro Leal" <ll...@udesoft.com> wrote in message
news:OTe99SogBHA.1872@tkmsftngp04...
Gracias por cualquier ayuda que me puedas dar.
"Fernando G. Guerrero" <fer...@guerrerog.org> escribió en el mensaje
news:O#OsrXogBHA.1868@tkmsftngp05...
Use northwind
GO
CREATE VIEW Precios
AS
SELECT OrderID, SUM(Quantity) AS Units, SUM(CASE discount WHEN 0 THEN
quantity*UnitPrice ELSE quantity*UnitPrice*(1-discount) END) AS Precio
FROM [Order details]
GROUP BY OrderID
GO
SELECT *
FROM Precios
Verás como funciona perfectamente.
El diseñador de consultas es una utilidad basada en DaVinci Tools (también
llamado Visual Database Tools) con una funcionalidad muy limitada. Es mejor
que crees las vistas mediante las instrucciones Transact-SQL adecuadas, en
Query Analyzer. En cualquier caso, el mensaje que mencionas solo indica que
el Diseñador de Consultas no sabe cómo mostrar esta consulta gráficamente,
pero puedes almacenarla y ejecutarla dentro del mismo diseñador.
--
Fernando G. Guerrero
SQL Server MVP
QA plc., UK
PASS Spanish Group
www.sqlserverbyexample.com
www.callsql.com
www.qa.com
"Comparte lo que sabes, aprende lo que no sepas"
Me enorgullezco de colaborar con la comunidad de usuarios de PASS (la
Asociación Profesional de SQL Server). Busca más información en:
http://www.sqlpass.org
"Luis Alejandro Leal" <ll...@udesoft.com> wrote in message
news:uj6r8dogBHA.1964@tkmsftngp02...
al igual, si puedes, me gustaría que me dieras tu opinión sobre la pregunta
que realice el día 10/12/2001 con asunto "Vistas con parámetros", en si,
este era el inconveniente principal, y el que muy amablemente Carlos
Sacristán me dio su ayuda y cooperación.
en general lo que necesito saber es como puedo realizar un procedimiento
principal que tenga parámetros y que tambien estos se pasen a un
procedimiento anidado, pero que este procedimiento anidado se encuentre
dentro de un select, es decir, porderlo tratar como una tabla o vista.
De todas maneras, muchas gracias por tu colaboración oportuna y eficaz
Luis Alejandro Leal
"Fernando G. Guerrero" <fer...@guerrerog.org> escribió en el mensaje
news:OBbNfkogBHA.2072@tkmsftngp03...
Si quieres ejecutar un procedimiento almacenado utilizando su resultado
dentro de un SELECT, puedes utilizar OPENQUERY:
EXEC sp_serveroption [TuServidor], 'data access', true
SELECT * FROM OPENQUERY([FGGADVENT\S2KDev], 'EXEC sp_help') AS A
El problema viene con los parámetros, ya que la función OPENQUERY no admite
variables, sino strings constantes. Lo que sí puedes hacer es construir toda
tu consulta en una variable varchar(8000), incluyendo la llamada a OPENQUERY
y ejecutarla mediante EXECUTE (@query), como en el siguiente ejemplo:
CREATE Procedure DimeProducto
@ID int
AS
SELECT *
FROM Products
WHERE ProductID = @ID
GO
DECLARE @a varchar(8000)
DECLARE @ID int
DECLARE @query varchar(8000)
SET @ID = 15
SET @a = 'EXEC Northwind.dbo.DimeProducto ' + CAST(@ID as varchar(10))
SET @query = 'SELECT * FROM OPENQUERY([TuServidor], '''
+ @a + ''') AS A'
EXEC (@query)
Utilizando funciones definidas por el usuario, la solución habría sido tan
sencilla como la siguiente:
CREATE FUNCTION fnDimeProducto(@ID int)
RETURNS @t TABLE (ProductName nvarchar(40), UnitPrice money)
AS
BEGIN
-- Aquí puedes insertar tantas instrucciones como necesites
INSERT @t
SELECT ProductName, UnitPrice
FROM Products
WHERE ProductID = @ID
RETURN
END
GO
-- Y la utilizas así:
SELECT *
FROM fnDimeProducto(16)
--
Fernando G. Guerrero
SQL Server MVP
QA plc., UK
PASS Spanish Group
www.sqlserverbyexample.com
www.callsql.com
www.qa.com
"Comparte lo que sabes, aprende lo que no sepas"
Me enorgullezco de colaborar con la comunidad de usuarios de PASS (la
Asociación Profesional de SQL Server). Busca más información en:
http://www.sqlpass.org
"Luis Alejandro Leal" <ll...@udesoft.com> wrote in message
news:OhsbuvogBHA.2072@tkmsftngp03...
Siempre es complicado cuando se comienza, pero es importante encontrar apoyo
y soluciones para no desistir en el intento.
Agradezco tu tiempo y tu colaboración ....................... se que te he
agradecido mucha veces pero siendo esta la única manera de espresarte mi
agradecimientos, ya que si pudiera , por tu ayuda te nombraba padrino de uno
de los hijos que pienso tener.. :)
"Fernando G. Guerrero" <fer...@guerrerog.org> escribió en el mensaje
news:OvMGk#ogBHA.1552@tkmsftngp02...
La verdad es que si aceptara más ahijados, los que ya tengo se me quejarían,
pero quedo honrado por el ofrecimiento.
Ya nos tomaremos alguna cerveza en algún sitio.
--
Fernando G. Guerrero
SQL Server MVP
QA plc., UK
PASS Spanish Group
www.sqlserverbyexample.com
www.callsql.com
www.qa.com
"Comparte lo que sabes, aprende lo que no sepas"
Me enorgullezco de colaborar con la comunidad de usuarios de PASS (la
Asociación Profesional de SQL Server). Busca más información en:
http://www.sqlpass.org
"Luis Alejandro Leal" <ll...@udesoft.com> wrote in message
news:OVb1fMpgBHA.1568@tkmsftngp07...