CREATE TABLE #tmp (Key1 VARCHAR(10), Key2 VARCHAR(10) )CREATE TABLE #tmp2 (Key1 VARCHAR(10), Key2 VARCHAR(10), Key3 VARCHAR(10), Key4 VARCHAR(10) )INSERT INTO #tmp VALUES ('aa', 'bb')INSERT INTO #tmp VALUES ('cc', 'dd')INSERT INTO #tmp VALUES ('ee', 'ff')INSERT INTO #tmp VALUES ('gg', 'hh')INSERT INTO #tmp2 VALUES ( 'aa', 'zz', 'abc', 'def')INSERT INTO #tmp2 VALUES ( 'bb', 'ee', 'abc', 'def')INSERT INTO #tmp2 VALUES ( 'cc', 'gg', 'abc', 'def')INSERT INTO #tmp2 VALUES ( 'dd', 'zz', 'abc', 'def')SELECT Key1, Key2from #tmpEXCEPTSELECT Key1 FROM #tmp2
Msg 205, Level 16, State 1, Line 2All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
INSERT INTO PortSecAgg (PortfolioID, SecurityID, AsOfDate, IsShortPosition, PortfolioCode, Symbol, Quantity, SectypeCode, Cusip, UnitCost, TotalCost, Price, MarketValue, AccruedInterest, UnrealizedGL, IsSubAccount )SELECT vpsa_s.PortfolioID, vpsa_s.SecurityID, vpsa_s.AsOfDate, CASE WHEN vpsa_s.Quantity < 0. THEN 1 ELSE 0 END AS IsShortPosition, vpsa_s.PortfolioCode, vpsa_s.Symbol, vpsa_s.Quantity , vpsa_s.SectypeCode, vpsa_s.Cusip, vpsa_s.UnitCost, vpsa_s.TotalCost, vpsa_s.Price, vpsa_s.MarketValue, vpsa_s.AccruedInterest, vpsa_s.UnrealizedGL , CASE WHEN vpsa_s.IsSubAccount = 'Y' THEN 1 else 0 END AS IsSubAccountFROM vw_PortSecAgg_Staging AS vpsa_s LEFT JOIN PortSecAgg AS psa ON psa.PortfolioID = vpsa_s.PortfolioID AND psa.SecurityID = vpsa_s.SecurityID AND psa.AsOfDate = vpsa_s.AsOfDate AND psa.IsShortPosition = vpsa_s.IsShortPositionWHERE psa.PortfolioID IS NULL
SELECT key1, key2 FROM #tmpEXCEPTSELECT key1, key2 FROM #tmp2
;WITH updates ({list of columns for the CTE here})AS (SELECT key1, key2 FROM #tmpEXCEPTSELECT key1, key2 FROM #tmp2 )SELECT * INTO #updates FROM updates;UPDATE alias SET ... FROM YourFinalTable t INNER JOIN #updates u ON u.key1 = t.key1 ...INSERT INTO YourFinalTable (...)SELECT ... FROM YourFinalTable t LEFT JOIN #updates u ON u.key1 = t.key1 ... WHERE u.key1 IS NULL;
select #tmp.key1, #tmp.key2 FROM #tmpinner join ( SELECT key1 FROM #tmp EXCEPT SELECT key1 FROM #tmp2 ) q on #tmp.key1 = q.key1