UPDATE
sur PDW est un peu étrange et a quelques limites que vous avez trouvé. Fondamentalement, vous devez d'abord faire un CTAS. Ensuite, vous pouvez soit vous joindre à la table CTAS lors de la mise à jour ou simplement renommer l'ancienne table et la remplacer par la nouvelle table CTAS via le renommage. Voici un exemple de CTAS puis se joindre au cours MISE À JOUR:
CREATE TABLE CTAS_ACS
WITH (DISTRIBUTION = REPLICATE)
AS
SELECT
ISNULL(CAST([EnglishProductCategoryName] AS NVARCHAR(50)),0) AS [EnglishProductCategoryName]
,ISNULL(CAST([CalendarYear] AS SMALLINT),0) AS [CalendarYear]
,ISNULL(CAST(SUM([SalesAmount]) AS MONEY),0) AS [TotalSalesAmount]
FROM dbo.factInternetSales s
JOIN dbo.DimDate d ON s.OrderDateKey = d.DateKey
JOIN dbo.DimProduct p ON s.ProductKey = p.ProductKey
JOIN dbo.DimProductSubCategory u ON p.[ProductSubcategoryKey] = u.[ProductSubcategoryKey]
JOIN dbo.DimProductCategory c ON u.[ProductCategoryKey] = c.[ProductCategoryKey]
WHERE [CalendarYear] = 2004
GROUP BY [EnglishProductCategoryName]
, [CalendarYear];
UPDATE AnnualCategorySales
SET AnnualCategorySales.TotalSalesAmount = CTAS_ACS.TotalSalesAmount
FROM CTAS_ACS
WHERE CTAS_ACS.[EnglishProductCategoryName] = AnnualCategorySales.[EnglishProductCategoryName]
AND CTAS_ACS.[CalendarYear] = AnnualCategorySales.[CalendarYear];
Alors que le schéma ci-dessus est celle typique, dans votre cas, je pense que ce qui suit fonctionnerait (du haut de ma tête):
Update TableA
Set EnableFlag='Y'
WHERE ID IN (
SELECT B.ID
FROM TableB B
INNER JOIN TableC C ON B.ID=C.ID
)
Merci Greg .... – Abhi