Creando View con UNION y index

10/01/2008 - 21:28 por Oilers | Informe spam
Estoy creando una vista y tengo el siguiente problema

CREATE VIEW View4 WITH SCHEMABINDING
AS
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice > 10
GROUP BY ProductName, od.ProductID
union all
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice = ZZZ
GROUP BY ProductName, od.ProductID

GO
CREATE UNIQUE CLUSTERED INDEX VdiscountInd
ON View4 (ProductName, ProductID)

el error es el siguiente:

Msg 10116, Level 16, State 1, Line 4

Cannot create index on view
'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv' because it contains one
or more UNION, INTERSECT, or EXCEPT operators. Consider creating a
separate indexed view for each query that is an input to the UNION,
INTERSECT, or EXCEPT operators of the original view.

Preguntas similare

Leer las respuestas

#1 Maxi Accotto
11/01/2008 - 01:30 | Informe spam
Hola, usted ha leido en sus libros sobre vistas indexadas y sus
limitaciones? si accede a ellos vera que no se permiten ese tipo de
sentencias como esta usted intentando hacer


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Oilers" escribió en el mensaje de
noticias:
Estoy creando una vista y tengo el siguiente problema

CREATE VIEW View4 WITH SCHEMABINDING
AS
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice > 10
GROUP BY ProductName, od.ProductID
union all
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice = ZZZ
GROUP BY ProductName, od.ProductID

GO
CREATE UNIQUE CLUSTERED INDEX VdiscountInd
ON View4 (ProductName, ProductID)

el error es el siguiente:

Msg 10116, Level 16, State 1, Line 4

Cannot create index on view
'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv' because it contains one
or more UNION, INTERSECT, or EXCEPT operators. Consider creating a
separate indexed view for each query that is an input to the UNION,
INTERSECT, or EXCEPT operators of the original view.

Respuesta Responder a este mensaje
#2 Alex Martínez
11/01/2008 - 11:34 | Informe spam
<Cannot create index on view 'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv'
because it contains one or more ***UNION*** ...>

De hecho, ni siquiera hace falta leer la ayuda. El mensaje de error ya lo
dice todo...
;-)

Saludos,
Alex


"Maxi Accotto" escribió en el mensaje
news:eRVoAD%
Hola, usted ha leido en sus libros sobre vistas indexadas y sus
limitaciones? si accede a ellos vera que no se permiten ese tipo de
sentencias como esta usted intentando hacer


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Oilers" escribió en el mensaje de
noticias:
Estoy creando una vista y tengo el siguiente problema

CREATE VIEW View4 WITH SCHEMABINDING
AS
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice > 10
GROUP BY ProductName, od.ProductID
union all
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice = ZZZ
GROUP BY ProductName, od.ProductID

GO
CREATE UNIQUE CLUSTERED INDEX VdiscountInd
ON View4 (ProductName, ProductID)

el error es el siguiente:

Msg 10116, Level 16, State 1, Line 4

Cannot create index on view
'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv' because it contains one
or more UNION, INTERSECT, or EXCEPT operators. Consider creating a
separate indexed view for each query that is an input to the UNION,
INTERSECT, or EXCEPT operators of the original view.

Respuesta Responder a este mensaje
#3 Maxi
11/01/2008 - 18:41 | Informe spam
Bueno eso es cierto, pero el amigo puede pensar que es un bug en si, por eso
siempre igual es bueno leer la ayuda, a mi me ha pasado en varios productos
de errores que realmente eran bugs :S


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Alex Martínez" escribió en el mensaje
news:
<Cannot create index on view
'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv' because it contains one or
more ***UNION*** ...>

De hecho, ni siquiera hace falta leer la ayuda. El mensaje de error ya lo
dice todo...
;-)

Saludos,
Alex


"Maxi Accotto" escribió en el mensaje
news:eRVoAD%
Hola, usted ha leido en sus libros sobre vistas indexadas y sus
limitaciones? si accede a ellos vera que no se permiten ese tipo de
sentencias como esta usted intentando hacer


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Oilers" escribió en el mensaje de
noticias:
Estoy creando una vista y tengo el siguiente problema

CREATE VIEW View4 WITH SCHEMABINDING
AS
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice > 10
GROUP BY ProductName, od.ProductID
union all
SELECT ProductName, od.ProductID, SUM(od.UnitPrice*(1.00-Discount))
AS AvgPrice, SUM(od.Quantity) AS Units,
COUNT_BIG(*) AS Count
FROM dbo.[Order Details] AS od, dbo.Products AS p
WHERE od.ProductID = p.ProductID
AND od.UnitPrice = ZZZ
GROUP BY ProductName, od.ProductID

GO
CREATE UNIQUE CLUSTERED INDEX VdiscountInd
ON View4 (ProductName, ProductID)

el error es el siguiente:

Msg 10116, Level 16, State 1, Line 4

Cannot create index on view
'CDW_DM_STAR_APORI.dbo.dim_ReportProvider_ixv' because it contains one
or more UNION, INTERSECT, or EXCEPT operators. Consider creating a
separate indexed view for each query that is an input to the UNION,
INTERSECT, or EXCEPT operators of the original view.







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida