2016-07-22 10 views
1

Ich bekomme eine "Alle Abfragen kombiniert mit einem UNION, INTERSECT oder EXCEPT-Operator muss eine gleiche Anzahl von Ausdrücken in ihren Ziellisten haben".SQL Query, Insert, Union und Join

INSERT INTO dbo.FactInternetSales (
    ProductKey 
    ,CustomerKey 
    ,DateKey 
    ,OrderQuantity 
    ,UnitPrice 
    ,UnitPriceDiscount 
    ,TaxAmt 
    ,Freight 
    ) 
SELECT ProductKey 
FROM dbo.dimProduct 

UNION ALL 

SELECT CustomerKey 
FROM dbo.dimCustomer 

UNION ALL 

SELECT DateKey 
FROM dbo.dimDate 

UNION ALL 

SELECT D.OrderQty 
    ,D.UnitPrice 
    ,D.UnitPriceDiscount 
    ,H.TaxAmt 
    ,H.Freight 
FROM AdventureWorksLT2008.SalesLT.SalesOrderDetail AS D 
FULL JOIN AdventureWorksLT2008.SalesLT.SalesOrderHeader H ON D.SalesOrderID = H.SalesOrderID 

Antwort

0

Die Fehlermeldung sagt, es all..Final Abfrage in der Vereinigung alle doesnt Spalten als others..You versuchen können, unter denen die Werke, da Sie nicht über gemeinsame Spalten in Ihrem Code

Sie beitreten ich erhalte einen Fehler die Instanz der SQL Server-Datenbank-Engine kann diesen

;With cte 
as 
(
Select ProductKey From dbo.dimProduct 
UNION All 
Select CustomerKey From dbo.dimCustomer 
UNION All 
Select DateKey From dbo.dimDate) 
,cte1 as 
(
Select D.OrderQty, 
    D.UnitPrice, 
    D.UnitPriceDiscount, 
    H.TaxAmt, 
    H.Freight 
From  AdventureWorksLT2008.SalesLT.SalesOrderDetail As D 
FULL JOIN AdventureWorksLT2008.SalesLT.SalesOrderHeader H 
ON D.SalesOrderID = H.SalesOrderID 
) 
select cte.*,cte1.* 
from cte,cte1 
+0

ich bekomme es nicht, Ihr Code zeigt falsche Syntax. Ich habe den Fehler verstanden, aber ich konnte das Problem nicht lösen, während ich versuchte, es in die Tabelle einzufügen – cnayak

+0

Siehe aktualisiert, das funktioniert. Sie können auch verwenden, wenn sie die gleichen Spalten haben – TheGameiswar

+0

danke ich konnte bekommen, was ich wollte von dem Konzept, das du gabst. Ich habe Union alle entfernt und mit WITH cte1, cte2, cte3, cte4 verwendet, um Productkey, CustomerKey, DateKey in verschiedenen Spalten zu erhalten – cnayak

0

versuchen, wenn ich in die folgenden Art und Weise einzufügen versuchen kann keine LOCK-Ressource zu diesem Zeitpunkt erhalten. Führen Sie die Anweisung erneut aus, wenn weniger aktive Benutzer vorhanden sind. Bitten Sie den Datenbankadministrator, die Sperr- und Speicherkonfiguration für diese Instanz zu überprüfen oder nach langfristigen Transaktionen zu suchen.

WITH cte1 
AS (
    SELECT ProductKey 
    FROM dbo.dimProduct 
    ) 
    ,cte2 
AS (
    SELECT CustomerKey 
    FROM dbo.dimCustomer 
    ) 
    ,cte3 
AS (
    SELECT DateKey 
    FROM dbo.dimDate 
    ) 
    ,cte4 
AS (
    SELECT D.OrderQty 
     ,D.UnitPrice 
     ,D.UnitPriceDiscount 
     ,H.TaxAmt 
     ,H.Freight 
    FROM AdventureWorksLT2008.SalesLT.SalesOrderDetail AS D 
    FULL JOIN AdventureWorksLT2008.SalesLT.SalesOrderHeader H ON D.SalesOrderID = H.SalesOrderID 
    ) 
INSERT INTO dbo.FactInternetSales (
    ProductKey 
    ,CustomerKey 
    ,DateKey 
    ,OrderQuantity 
    ,UnitPrice 
    ,UnitPriceDiscount 
    ,TaxAmt 
    ,Freight 
    ) 
SELECT cte1.* 
    ,cte2.* 
    ,cte3.* 
    ,cte4.* 
FROM cte1 
    ,cte2 
    ,cte3 
    ,cte4 
+0

Könnten Sie den Fehler @TheGameiswar auschecken – cnayak