2015-08-12 7 views
1

У меня есть SQL-запросSQL Server 2012, исключить столбец

; with cte as 
(
    SELECT 
     PARSENAME(REPLACE(replace(replace(replace(replace(dbo.IDENTITY_MAP.Name, 'My Company\', ''), '-VLAN2', ''), '.VLAN2\', ''), '.Instr\', '') , '\' , '.'), 1) as "Site", 
     Count (CASE 
       WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%' THEN 1 
       END) AS 'SEP-11', 
     Count (CASE 
       WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%' THEN 1 
       END) AS 'SEP-12', 
    FROM 
     dbo.sem_computer 
    INNER JOIN 
     [dbo].[V_SEM_COMPUTER] ON [dbo].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID 
    WHERE 
     dbo.IDENTITY_MAP.Name NOT LIKE '%Servers%' 
    GROUP BY 
     PARSENAME(REPLACE(replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','') , '\' , '.'),1) 
) 
select * 
from cte 
join SEPM_site ss on cte.Site = ss.Site 

Это дает выход Я ищу ------ почти то

Site SEP-11 SEP-12 Rackcode Circuit Site 

мне нужен только один столбец для Site.

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

; with cte as (SELECT ...) 
select * into temptable 
from cte 
join SEPM_site ss 
on cte.Site = ss.Site 
alter table temptable 
drop column cte.Site 
select * from temptable 
drop table temptable 

Но я получаю ошибку

Неправильный синтаксис около «»

И если я не указать, какие таблицы Site от, я получаю ошибку,

имена столбцов в каждой таблице должны быть уникальными. Название столбца «Сайт» в таблице «temptable» указано более одного раза.

Но вот почему я пытаюсь удалить повторяющуюся колонку!

Спасибо!

ответ

2

Просто укажите столбцы, которые вы хотите в вашем заявлении выберите:

select cte.Site, cte.[SEP-11], cte.[SEP-12], ss.Rackcode, ss.Circuit 
from cte 
join SEPM_site ss 
on cte.Site = ss.Site 

Вы также можете выбрать все столбцы в КТР и только те, которые вы хотите в сс:

select cte.*, ss.Rackcode, ss.Circuit 
from cte 
join SEPM_site ss 
on cte.Site = ss.Site