|
Ozzie19
Starting Member
2 Posts |
Posted - 2009-03-04 : 08:59:39
|
| I have a pretty beefy UNION query - right now I get "ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator." which makes no sense since VACV.Level1OrderBy is in both halves of the UNION.SELECT VVT.VehicleID, VVT.Name, LVL.[Name], LVL.AssetClassificationID, ACL.Level1Name, ACL.Level1ID, ACL.Level1Ref,ACL.Level2Name, ACL.Level2ID, ACL.Level2Ref, ACL.Level3Name, ACL.Level3ID, ACL.Level3Ref,ACL.Level4Name, ACL.Level4ID, ACL.Level4Ref, ACL.Level5Name, ACL.Level5ID, ACL.Level5Ref,ACL.Level6Name, ACL.Level6ID, ACL.Level6Ref, COALESCE( AV.MinimumInvestmentAmount, VVT.MinimumInvestmentAmount, 0 ), VP.[1YearReturn], VP.[3YearAnnualizedReturn], VP.[5YearAnnualizedReturn], VP.[60MonthStdDev], VVT.TotalExpenseRatio, VD.Filename, VD.FileType, 0 AS Selected, 0 AS Favorite, CASE WHEN @ModelLevel < 6 THEN NULL ELSE VACV.Level6OrderBy END AS Level6OrderBy, CASE WHEN @ModelLevel < 5 THEN NULL ELSE VACV.Level5OrderBy END AS Level5OrderBy, CASE WHEN @ModelLevel < 4 THEN NULL ELSE VACV.Level4OrderBy END AS Level4OrderBy, CASE WHEN @ModelLevel < 3 THEN NULL ELSE VACV.Level3OrderBy END AS Level3OrderBy,CASE WHEN @ModelLevel < 2 THEN NULL ELSE VACV.Level2OrderBy END AS Level2OrderBy, VACV.Level1OrderBy AS Level1OrderBy, Risk.RiskMetrics FROM dbo.ClassificationLevels ACLINNER JOIN dbo.ModelVehiclesVVT VVT ON ACL.Level1ID = vvt.AssetClassificationIDINNER JOIN dbo.Classifications LVL ON VVT.AllocationAssetClassificationID = LVL.AssetClassificationIDINNER JOIN dbo.Vehicles AV ON VVT.VehicleID = AV.VehicleID AND AV.OrgID = @OrgIDLEFT OUTER JOIN dbo.VehicleTypes VT ON VVT.VehicleID = VT.VehicleID AND VT.OrgID = @EnterpriseOrgIDINNER JOIN dbo.ClassificationLevelsOrderByView VACV ON VVT.AssetClassificationID = VACV.Level1IDLEFT OUTER JOIN dbo.Documents VD ON VVT.VehicleID = VD.VehicleIDLEFT OUTER JOIN dbo.Performance VP ON VVT.VehicleID = VP.VehicleIDLEFT OUTER JOIN dbo.RiskMetrics Risk ON VVT.VehicleID = Risk.VehicleID AND Risk.ProgramID = @ProgramIDLEFT OUTER JOIN dbo.CompositionVehicles PCV ON VVT.VehicleID = PCV.VehicleID AND PCV.OrgID = @OrgIDWHERE VVT.ProgramID = @ProgramID AND VVT.ModelID = @ModelID AND PCV.VehicleID IS NULLUNIONINSERT INTO #TempProgramModelVehiclesList(VehicleID, ShortName, AllocationAssetClassificationName, AllocationAssetClassificationID, Level1Name, Level1ID, Level1Ref, Level2Name, Level2ID, Level2Ref, Level3Name, Level3ID, Level3Ref, Level4Name, Level4ID, Level4Ref, Level5Name, Level5ID, Level5Ref, Level6Name, Level6ID, Level6Ref, MinimumInvestmentAmount, [1YearReturn], [3YearAnnualizedReturn], [5YearAnnualizedReturn], [60MonthStdDev], TotalExpenseRatio, [FileName], FileType, Selected, Favorite, Level6OrderBy, Level5OrderBy, Level4OrderBy, Level3OrderBy, Level2OrderBy, Level1OrderBy, RiskMetrics)SELECT VICH.VehicleID, VICH.ShortName, VICH.AssetClassificationName AS [Name], VICH.AllocationAssetClassificationID, VACV.Level1Name, VACV.Level1ID, VACV.Level1Ref, VACV.Level2Name, VACV.Level2ID, VACV.Level2Ref, VACV.Level3Name, VACV.Level3ID, VACV.Level3Ref, VACV.Level4Name, VACV.Level4ID, VACV.Level4Ref, VACV.Level5Name, VACV.Level5ID, VACV.Level5Ref, VACV.Level6Name, VACV.Level6ID, VACV.Level6Ref, VICH.MinimumInvestmentAmount, VICH.[1YearReturn], VICH.[3YearAnnualizedReturn], VICH.[5YearAnnualizedReturn],VICH.[60MonthStdDev], VICH.TotalExpenseRatio, VD.FileName, VD.FileType, 0, 0,CASE WHEN @ModelLevel < 6 THEN NULL ELSE VACV.Level6OrderBy END AS Level6OrderBy, CASE WHEN @ModelLevel < 5 THEN NULL ELSE VACV.Level5OrderBy END AS Level5OrderBy, CASE WHEN @ModelLevel < 4 THEN NULL ELSE VACV.Level4OrderBy END AS Level4OrderBy, CASE WHEN @ModelLevel < 3 THEN NULL ELSE VACV.Level3OrderBy END AS Level3OrderBy,CASE WHEN @ModelLevel < 2 THEN NULL ELSE VACV.Level2OrderBy END AS Level2OrderBy, VACV.Level1OrderBy AS Level1OrderBy, RiskHV.RiskMetrics FROM dbo.InCurrentHolding VICHINNER JOIN dbo.VehicleTypes VVT ON VICH.VehicleID = VVT.VehicleID AND VVT.OrgID = @EnterpriseOrgID INNER JOIN dbo.ClassificationLevelsOrderByView VACV ON VVT.AssetClassificationID = VACV.Level1IDLEFT OUTER JOIN dbo.Documents AS VD ON VICH.VehicleID = VD.VehicleIDINNER JOIN RiskMetrics Risk ON RiskHV.VehicleID = VICH.VehicleIDWHERE VICH.ProposalID = @ProposalIDORDER BY CASE WHEN @ModelLevel = 1 THEN (RANK() OVER (ORDER BY VACV.Level1OrderBy )) ENDBuehler? |
|