SQL 2000查询问题?

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:23:25
select * from loginname where userid in (select userid from loginname) and loginmonth in (select convert(char(7),day1,120) from #temp1 ) and day+(select datename(day,Day1) from #temp1)=1
有哪位高手告诉我,如果把day+(select datename(day,Day1) from #temp1)转换成为一个列名,因为,我and 后面是个动态的列名来判断是否=1

现在我这条语句执行时报错。。。。请教高手解决。谢谢!
报错信息为:
服务器: 消息 207,级别 16,状态 3,行 1
列名 'day' 无效。

and 后面应该是day再加上select datename(day,Day1) from #temp1查出的数字,组合成一列。并作为条件查询。。。。

1、通过你的错误提示 是下面这里的第一个day出错啦!
day+(select datename(day,Day1) from #temp1)
以为没day这列,还有day这个是系统内特殊的函数名和日期标识名,最好别用

2、如果把day+(select datename(day,Day1) from #temp1)转换成为一个列名,因为,我and 后面是个动态的列名来判断是否=1
你的意识是不是想把后面的变成字段名"day1",如果这样,你就用字符串组合成你要完成SQL语句!你这样day+(一个字符),最后就是字符内容合加而已,如果有一个是数字一个不是数字相加还会出现报错无法转换成有效数字。

select *
from loginname
where userid in (select userid from loginname)
and loginmonth in (select convert(char(7), day1, 120) from #temp1 t)
and day + (select datename(day, Day1) from #temp1 t1 where t.id=t1.id) = 1
这样执行试试
你试试这样
你这样加的时候day+(select datename(day,Day1) from #temp1)=1 这个select datename(day,Day1) from #temp1)查询结果出来不能跟day一一对应,没有关系过好里面要加个关系,你吧t.id= t1.id该成你自己想要的关系就可以了,

首先我觉的 day+(select datename(day,Day1) from #temp1)
应该用一个括号括在一起,其次你麻烦你把报错的信息拿上来,猜的累