4
ALTER View Myview AS

(SELECT
        TOP 1 ORGANIZATION_id
    FROM ORGANIZATION 
    WHERE code = mo.FunctionCode) org_id,
(SELECT
        TOP 1 ID
    FROM DEPARTMENT
    WHERE [NAME] = mo.Code) dep_id,
(SELECT
        TOP 1 Name
    FROM DEPARTMENT
    WHERE [ID] = dep_id) Dep_Name,
(SELECT
        TOP 1 Org_Name
    FROM CA_ORGANIZATION
    WHERE [organization_id] = org_id) Org_Name,
(CASE    
    WHEN Dep_Name = 'sales' AND Org_Name = 'Advanture'
        THEN 'salesTeam'
    WHEN Dep_Name ! = 'Sales' AND Org_Name = 'External'
        THEN 'ExternalTeam'
    ELSE
        'DefaultTeam'
    END) type

    FROM detail_view dv
    LEFT OUTER JOIN Global_oganization mo  ON  mo.area =dv.code

ビューの変更中にエラーが発生しました

Invalid column name 'Dep_Name'.
Msg 207, Level 16, State 1, Procedure myview,
Invalid column name 'Org_Name'.
Msg 207, Level 16, State 1, Procedure myview,
Invalid column name 'Dep_Name'.
Msg 207, Level 16, State 1, Procedure myview,
Invalid column name 'Org_Name'.

部署名と組織名を検証して型を決定するCASE文を書きました。

このエラーを修正するのを手伝ってください。

4

2 に答える 2

7

これを試してみてください -

ALTER VIEW dbo.Myview
AS
    SELECT  /*missing in your query*/
            t.org_id
        ,   t.dep_id
        ,   t.Dep_Name
        ,   t.Org_Name
        ,   [type] = 
            CASE
                WHEN Dep_Name = 'sales' AND Org_Name = 'Advanture' THEN 'salesTeam'
                WHEN Dep_Name != 'Sales' AND Org_Name = 'External' THEN 'ExternalTeam' 
                ELSE 'DefaultTeam'
            END
    FROM (
        SELECT org_id = (
                    SELECT TOP 1 ORGANIZATION_id
                    FROM dbo.ORGANIZATION
                    WHERE Code = mo.FunctionCode
                )
            , dep_id = (
                    SELECT TOP 1 ID
                    FROM dbo.Department
                    WHERE [name] = mo.Code
                )
            , Dep_Name = (
                    SELECT TOP 1 name
                    FROM dbo.Department
                    WHERE [ID] = dep_id
                )
            , Org_Name = (
                    SELECT TOP 1 Org_Name
                    FROM dbo.CA_ORGANIZATION
                    WHERE [organization_id] = org_id
                )
        FROM dbo.detail_view dv
        LEFT JOIN dbo.Global_oganization mo ON mo.area = dv.Code
    ) t
于 2013-09-25T11:56:34.017 に答える