2010-07-05 3 views
2

이것은 아마도 대부분의 사람들에게는 어리석은 질문이지만 'AS'키워드와 select 문을 사용하여 열의 이름을 바꿀 수 있는지 궁금합니다.키워드 'AS'와 select 문을 사용하여 테이블의 이름을 바꿀 수 있습니까?

Select Main.EmpId 
     , Associate_List.costCenter, Assignments.Area 
     , Main.Assignments_1 AS (
      Select Assignment_Name 
       from Assignments 
       where Assignment_Number = 1 
        and Assignments.Area = '@Someparemeter' 
     ) 
from associate_list 
    , main 
    , APU_CC 
    , Assignments 
where Main.Empid = Associate_List.Empid 
    and substring(Associate_List.CostCenter,1,4) = APU_CC.CostCentre 

내가 대해 궁금하네요 SQL의 유일한 부분은 다음과 같습니다 :

Main.Assignments_1 AS (
    Select Assignment_Name 
     from Assignments 
     where Assignment_Number = 1 
      and Assignments.Area = '@Someparemeter' 
) 

이 가능 아니면 내가 jibberish을 이야기하고 또는이 그냥 바보 같은 일이 여기에

내 SQL입니다 할 것?

많은 감사

as 후 부분에 값이 아니라 변수 이름이 아닌

답변

1

; SQL 데이터베이스는이를 사용하여 결과 집합의 값을 참조하여 비교/정렬/필터링 할 수 있습니다. 그러므로 이것은 불가능합니다.

이 작업을 수행해야하는 경우 동적 쿼리를 작성하는 방법에 대한 데이터베이스 설명서를 읽어야합니다. 그러나 디버깅하기가 매우 어려울 수있는 이상한 오류가 발생하기 때문에 반대 의견을 제시합니다.

+0

아, 내 혼란에 대한 답변입니다. 시간 내 주셔서 감사합니다. –

0

나는 당신이 무엇을 몰고 가는지 잘 모르겠습니다.

Assignments_1라는 메인 테이블의 열이있는 경우,이 같은 쿼리에 이름을 바꿀 수 있습니다 (다른 이유로 출력의 상단에 나에 대해 다른 헤더를 제공하기 위해) ...

SELECT MAIN.ASSIGNMENT_1 AS MY_NEW_NAME 
    FROM etc. 
당신이 그런 것들 중 하나를하지 않은 경우 당신이 당신의 쿼리에 파생 테이블을 원하는 경우에 당신이 이런 식으로 이름을

...

SELECT MAIN.ASSIGNMENT_1, 
     SELECT * 
      FROM (SELECT THIS, THAT, THE_OTHER 
        FROM SOME_TABLE) AS DERIVED_TABLE 
    FROM etc. 

, 명확히하고 우리는 돕기 위해 노력하겠습니다.

+0

안녕하세요. 도움을 주셔서 감사합니다. 그러나 맨 위로 내 혼란에 대답합니다. 예를 들어, 100 개의 비용 센터가 있고 각 비용 센터에는 1 - 60 개의 보증이 있지만 모든 개별 할당에는 할당 이름은 어떤 코스트 센터가 선택되었는지에 따라 선택되므로 이름을 바꿀 수 없으므로 동일한 이름으로 바꿉니다. 고맙습니다. :) –

0

그러나 당신이 할 수 있습니다 :

Select m.EmpId, l.costCenter, 
(Select Area From Assignments a 
    Where Assignment_Number = 1 
    And Area = '@Someparemeter') As Area, 
(Select Assignment_Name From Assignments a 
    Where Assignment_Number = 1 
    And Area = '@Someparemeter') As Assignments_1 
From associate_list l 
    Join main m On m.Empid = l.Empid 
    Join APU_CC c On c.CostCentre = substring(l.CostCenter,1,4) 

나이 :

SQL 서버에서
Select m.EmpId, l.costCenter, Asgn.Area, 
    Asgn.Assignment_Name as Assignments_1 
From associate_list l 
    Join main m On m.Empid = l.Empid 
    Join APU_CC c On c.CostCentre = substring(l.CostCenter,1,4) 
    Cross Join (Select Assignment_Name From Assignments a 
       Where Assignment_Number = 1 
        And Area = '@Someparemeter') as Asgn 
0

는, 당신이 열에 별칭을 지정할 수 있도록 같은 :

... 
ColumnName AS ColumnAlias, 
... 

그리고 예와 같이 "하위 선택"을 할 수 있습니다. (나는 그런 쿼리를 작성하지 않을 것입니다. 먼저 하위 쿼리를 실행 한 다음 결과를 두 번째 쿼리에 넣으십시오.

DECLARE @Assignment_Name varca(100) -- or however long 

SELECT @Assignment_Name = Assignment_Name 
from Assignments 
where Assignment_Number = 1 
    and Assignments.Area = @Someparemeter 

SELECT 
... 
@Assignment_Name = Assignment_Name, 
... 
관련 문제