sql server 子查询问题
selecttop100net2.nameCN,*fromNM_NetDatasnet1leftjoinNM_NetSitesnet2onnet1.SiteCodeId=...
select top 100 net2.nameCN,* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId
以上sql是我把两个表关连起来后,
现在想法这个结果做为一个表 a
查表a 中的一个字段dataId
select top 100 a.dataId from
(select top 100 net2.nameCN,* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId) a;
就出错了 以下为出错原因!
消息 8156,级别 16,状态 1,第 1 行
多次为 'a' 指定了列 'SiteCodeId'。
怎么修改啊
最后答案:
select T.MediaCode,T.MediaName,sum(1) as total,
sum(case T.state when 1 then 0 else 1 end) as '已提交',
sum(case T.state when 1 then 1 else 0 end) as '未提交'
from (select A.State,C.MediaCode,C.MediaName from NM_CustCateDate A
join NM_NetDatas B on B.MediumTypeId=A.MediumTypeId and B.DataId=A.DataId
left join NM_Medias C on C.MediumType=B.MediumTypeId and C.MediaCode=B.MediaCode
where A.MediumTypeId=5 and B.PublicDate>='2000-01-01' and B.PublicDate<='2011-12-31') T
group by T.MediaCode,T.MediaName 展开
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId
以上sql是我把两个表关连起来后,
现在想法这个结果做为一个表 a
查表a 中的一个字段dataId
select top 100 a.dataId from
(select top 100 net2.nameCN,* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId) a;
就出错了 以下为出错原因!
消息 8156,级别 16,状态 1,第 1 行
多次为 'a' 指定了列 'SiteCodeId'。
怎么修改啊
最后答案:
select T.MediaCode,T.MediaName,sum(1) as total,
sum(case T.state when 1 then 0 else 1 end) as '已提交',
sum(case T.state when 1 then 1 else 0 end) as '未提交'
from (select A.State,C.MediaCode,C.MediaName from NM_CustCateDate A
join NM_NetDatas B on B.MediumTypeId=A.MediumTypeId and B.DataId=A.DataId
left join NM_Medias C on C.MediumType=B.MediumTypeId and C.MediaCode=B.MediaCode
where A.MediumTypeId=5 and B.PublicDate>='2000-01-01' and B.PublicDate<='2011-12-31') T
group by T.MediaCode,T.MediaName 展开
4个回答
展开全部
首先你内部的left join是通过SiteCodeId关联的,所以,你用*那么内部查询就会出现两个列名都是SiteCodeId的列,这样你在外层查询的时候就会报错。建议改成:
select top 100 a.dataId from
(select top 100 net2.nameCN,net1.* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId) a;
select top 100 a.dataId from
(select top 100 net2.nameCN,net1.* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId) a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想 sitecodeid 是主键,要唯一
你的目的是查询字段dataid ,如果字段在表NM_NetDatas中,语句
select top 100 net1.dataid,* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId
你的目的是查询字段dataid ,如果字段在表NM_NetDatas中,语句
select top 100 net1.dataid,* from NM_NetDatas net1
left join NM_NetSites net2
on net1.SiteCodeId = net2.SiteCodeId
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是你的NM_NetDatas 和NM_NetSites 表都有dataId字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询