select alias -- invalid column name

select alias -- invalid column name

am 26.06.2007 17:02:39 von sweetpotatop

Hi,

I got 'Invalid Column Name NewCol1' when I query the following:

Select col1, col2, (some calculation from the fields) as NewCol1,
(some calculation from the fields) as NewCol2,
NewCol1 = NewCol2 from
Table1 inner join Table2 inner join Table3....
Where
.....

Basically, I want to find out if NewCol1 = NewCol2 after the
calculation

Any advice?

Thanks in advance. Your help would be greatly appreciated.
Wanda

Re: select alias -- invalid column name

am 26.06.2007 18:16:15 von Ed Murphy

sweetpotatop@yahoo.com wrote:

> I got 'Invalid Column Name NewCol1' when I query the following:
>
> Select col1, col2, (some calculation from the fields) as NewCol1,
> (some calculation from the fields) as NewCol2,
> NewCol1 = NewCol2 from
> Table1 inner join Table2 inner join Table3....
> Where
> .....
>
> Basically, I want to find out if NewCol1 = NewCol2 after the
> calculation

You can try this:

select col1, col2, (...) as NewCol1, (...) as NewCol2,
case when NewCol1 = NewCol2 then 'equal' else 'not equal' end

but I don't think that works. This should definitely work:

select col1, col2, (...) as NewCol1, (...) as NewCol2,
case when (...) = (...) then 'equal' else 'not equal' end

Re: select alias -- invalid column name

am 26.06.2007 18:27:03 von sweetpotatop

On Jun 26, 12:16 pm, Ed Murphy wrote:
> sweetpota...@yahoo.com wrote:
> > I got 'Invalid Column Name NewCol1' when I query the following:
>
> > Select col1, col2, (some calculation from the fields) as NewCol1,
> > (some calculation from the fields) as NewCol2,
> > NewCol1 = NewCol2 from
> > Table1 inner join Table2 inner join Table3....
> > Where
> > .....
>
> > Basically, I want to find out if NewCol1 = NewCol2 after the
> > calculation
>
> You can try this:
>
> select col1, col2, (...) as NewCol1, (...) as NewCol2,
> case when NewCol1 = NewCol2 then 'equal' else 'not equal' end
>
> but I don't think that works. This should definitely work:
>
> select col1, col2, (...) as NewCol1, (...) as NewCol2,
> case when (...) = (...) then 'equal' else 'not equal' end

I just want to avoid the calculation again when it is already there as
my query takes a while to run already.

Re: select alias -- invalid column name

am 26.06.2007 19:41:16 von Ed Murphy

sweetpotatop@yahoo.com wrote:

> On Jun 26, 12:16 pm, Ed Murphy wrote:
>> sweetpota...@yahoo.com wrote:
>>> I got 'Invalid Column Name NewCol1' when I query the following:
>>> Select col1, col2, (some calculation from the fields) as NewCol1,
>>> (some calculation from the fields) as NewCol2,
>>> NewCol1 = NewCol2 from
>>> Table1 inner join Table2 inner join Table3....
>>> Where
>>> .....
>>> Basically, I want to find out if NewCol1 = NewCol2 after the
>>> calculation
>> You can try this:
>>
>> select col1, col2, (...) as NewCol1, (...) as NewCol2,
>> case when NewCol1 = NewCol2 then 'equal' else 'not equal' end
>>
>> but I don't think that works. This should definitely work:
>>
>> select col1, col2, (...) as NewCol1, (...) as NewCol2,
>> case when (...) = (...) then 'equal' else 'not equal' end
>
> I just want to avoid the calculation again when it is already there as
> my query takes a while to run already.

I think the server will recognize and optimize the duplication. If
you're concerned it won't, though, then you could use a temp table:

create table #foo (
col1 type, col2 type, NewCol1 type, NewCol2 type, match int
)

insert into #foo (col1, col2, NewCol1, NewCol2, match)
select col1, col2, (...), (...), 0

update #foo set match = 1 where NewCol1 = NewCol2

Re: select alias -- invalid column name

am 26.06.2007 21:51:15 von Plamen Ratchev

You can use a derived table, like this:

SELECT X.col1,
X.col2,
X.newcol1,
X.newcol2,
CASE WHEN X.newcol1 = X.newcol2
THEN 'Equal'
ELSE 'Not equal'
END AS compare
FROM (
SELECT col1,
col2,
AS newcol1,
AS newcol2
FROM Table1) AS X
INNER JOIN Table2
.....


HTH,

Plamen Ratchev
http://www.SQLStudio.com

Re: select alias -- invalid column name

am 26.06.2007 22:29:43 von Hugo Kornelis

On Tue, 26 Jun 2007 09:27:03 -0700, sweetpotatop@yahoo.com wrote:

>On Jun 26, 12:16 pm, Ed Murphy wrote:
>> sweetpota...@yahoo.com wrote:
>> > I got 'Invalid Column Name NewCol1' when I query the following:
>>
>> > Select col1, col2, (some calculation from the fields) as NewCol1,
>> > (some calculation from the fields) as NewCol2,
>> > NewCol1 = NewCol2 from
>> > Table1 inner join Table2 inner join Table3....
>> > Where
>> > .....
>>
>> > Basically, I want to find out if NewCol1 = NewCol2 after the
>> > calculation
>>
>> You can try this:
>>
>> select col1, col2, (...) as NewCol1, (...) as NewCol2,
>> case when NewCol1 = NewCol2 then 'equal' else 'not equal' end
>>
>> but I don't think that works. This should definitely work:
>>
>> select col1, col2, (...) as NewCol1, (...) as NewCol2,
>> case when (...) = (...) then 'equal' else 'not equal' end
>
>I just want to avoid the calculation again when it is already there as
>my query takes a while to run already.

Hi sweetpotatop,

Instead of using a temp table as Ed suggests, you can better use a
derived table:

SELECT col1, col2, NewCol1, NewCol2,
CASE WHEN NewCol1 = NewCol2 THEN 'equal' ELSE 'not equal' END
FROM (SELECT col1, col2, (...) AS NewCol1, (...) AS NewCol2
FROM YourTable
WHERE Something = SomethingElse) AS D;

--
Hugo Kornelis, SQL Server MVP
My SQL Server blog: http://sqlblog.com/blogs/hugo_kornelis