2010-07-05 2 views
2

Это, наверное, глупый вопрос для большинства из вас, но мне было интересно, можно ли переименовать столбец, используя ключевое слово «AS» и инструкцию select?Можете ли вы переименовать таблицу, используя ключевое слово 'AS' и инструкцию select?

Вот мой SQL:

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 или это просто глупо делать?

Большое спасибо

ответ

1

Часть после as не значение, а имя переменной; база данных SQL будет использовать его для ссылки на значение набора результатов, чтобы вы могли сравнивать/сортировать/фильтровать их. Поэтому это невозможно.

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

+0

Ahh права, который отвечает мое замешательство, спасибо за ваше время и помогите. –

0

Я не совсем уверен, во что вы едете.

Если есть столбец в таблице под названием Main 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

Hiya, спасибо за вашу помощь, но я думаю, что верхушка отвечает на мое замешательство. Позвольте мне в любом случае проверить: Например, существует 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) 

или это:

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

В SQL Server, вы можете присвоить псевдоним для столбца с AS следующим образом:

... 
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, 
... 
Смежные вопросы