TSQL 2008 Как сделать столбцы для представлений уникальными - PullRequest
0 голосов
/ 10 июля 2019

У меня есть запрос, который я пытаюсь сохранить как представление, но SSMS возвращает ошибку, в которой говорится, что существует несколько столбцов с одинаковым именем.

Я попытался переименовать затронутые столбцы как псевдоним, но безуспешно.

Имена столбцов в каждом представлении или функции должны быть уникальными.Имя столбца 'codemanQuestionID' в представлении или функция 'vwBlocks' указывается более одного раза.

create view vwBlocks as


SELECT        

LUConstructionType.codemanOptionID AS LUConstruction_codemanOptionID

, LUFascias.codemanOptionID AS LUFascias_codemanOptionID
, Block.windowsID
, LUWindows.windows
, LUWindows.codemanQuestionID AS codemanQuestion_ID

, Block.externalDoorID
, LUExternalDoor.externalDoor
, LUExternalDoor.codemanOptionID as LUExternal_codemanOptionID

FROM            Block LEFT OUTER JOIN
                         LUOwnership ON Block.ownershipID = LUOwnership.ownershipID LEFT OUTER JOIN
                         LULocalAuthority ON Block.localAuthorityID = LULocalAuthority.authorityTypeID LEFT OUTER JOIN
                         LUConstructionType ON Block.constructionTypeID = LUConstructionType.constructionTypeID LEFT OUTER JOIN
                         LUTV ON Block.TVID = LUTV.TVID LEFT OUTER JOIN
                         LUSatellite ON Block.satelliteID = LUSatellite.satelliteID LEFT OUTER JOIN
                         LUPlayArea ON Block.playArea = LUPlayArea.playAreaID LEFT OUTER JOIN
                         LURoofCovering ON Block.roofCoveringID = LURoofCovering.roofCoveringID LEFT OUTER JOIN
                         LUFascias ON Block.fasciasID = LUFascias.fasciasID LEFT OUTER JOIN
                         LUWindows ON Block.windowsID = LUWindows.windowsID LEFT OUTER JOIN
                         LUExternalDoor ON Block.externalDoorID = LUExternalDoor.externalDoorID LEFT OUTER JOIN
                         LUcontractorInfo ON Block.contractorInfoID = LUcontractorInfo.contractorID LEFT OUTER JOIN
                         LUagentInfo ON Block.agentInfoID = LUagentInfo.agentID LEFT OUTER JOIN
                         LULandlord ON Block.LandlordID = LULandlord.landlordID LEFT OUTER JOIN
                         LUblockStatus ON Block.blockStatusID = LUblockStatus.blockStatusID LEFT OUTER JOIN
                         LUPropertyGroup ON Block.propertyGroup = LUPropertyGroup.propertyGroupID LEFT OUTER JOIN
                         LUCommunalBoilerType ON Block.communalBoilerType = LUCommunalBoilerType.communalBoilerID LEFT OUTER JOIN
                         LUExternalAreaManagedBy ON Block.externalAreaManagedBy = LUExternalAreaManagedBy.managedByID LEFT OUTER JOIN
                         LUgasBoilerMakeModel ON Block.CommBoilerMakeModelID = LUgasBoilerMakeModel.makeModelId LEFT OUTER JOIN
                         LUMaintenanceResp ON Block.maintenanceRepID = LUMaintenanceResp.maintenanceRepID

Кто-нибудь может порекомендовать решение, пожалуйста?

Спасибо за любую помощь заранее.

1 Ответ

1 голос
/ 10 июля 2019

Я не вижу codemanQuestionID дважды.Вот несколько советов, которые помогли мне избежать и / или устранить подобные проблемы.

Существует как минимум четыре способа псевдонима столбца:

  1. (выражение)AS ((псевдоним))

  2. ((псевдоним)) = (выражение)

  3. WITH ((имя cte)) ((псевдоним1), (alias2), ...

  4. FROM ((подзапрос)) AS ((alias1>), (alias2, ...

AS - худшее ИМО. Его небрежно и запутанно, особенно если вы не включаете AS. Стиль псевдонимов, с которым я обычно работаю:

SELECT
   col1   = <expression>,
   col2   = <expression>,
   colABC = <expression>
FROM  schema.table1 AS t1
JOIN  schema.table2 AS t2;

Это облегчает процесс отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...