select BMonthID,B[Month],B[Order],A[Date],sum(isnull(APrice,0))as Price from pp2 A left join pp B
on AMonthID=BMonthID
where B[Order]<=5
group by BMonthID,B[Month],B[Order],A[Date]
order by BMonthID
把表名换掉就行了。
使用外部数据库 控件代码为:如果真 (外部数据库1打开SQL数据库 (服务器IP, 用户名, 密码, 数据库名称, , ) = 假) 信息框 (“连接失败”, 0, )使用数据库连接+记录集代码为:版本 2支持库 eDB如果 (数据库连接1连接SQLServer (服务器IP, 数据库名, 用户名, 密码) = 假) 信息框 (“连接失败”, 0, )否则 如果真 (记录集1置连接 (数据库连接1) = 假) 信息框 (“记录集关联数据库失败”, 0, ) 如果真结束
如果你想这样做,肯定有这样的SQL,可以写出来。
不过肯定是不建议这么做,效率肯定会很低。
要自己拼SQL。只用SQL语句也能实现不过非常麻烦。
SQL SERVER 2000 中 sysobjects 这个表记录所有的表。
syscolumns 这个表记录所有的列。
可以通过联合查询查出所有的表中的字段,然后拼SQL,进行查询。
SELECT
表名=dname,--case when acolorder=1 then dname else '' end,
字段序号=acolorder,
字段名=aname,
标识=case when COLUMNPROPERTY( aid,aname,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = aid AND colid=acolid
))) then '√' else '' end,
类型=bname,
占用字节数=alength,
长度=COLUMNPROPERTY(aid,aname,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(aid,aname,'Scale'),0),
允许空=case when aisnullable=1 then '√'else '' end,
默认值=isnull(etext,''),
字段说明=isnull(g[value],'')
FROM syscolumns a
left join systypes b on axtype=bxusertype
inner join sysobjects d on aid=did and dxtype='U' and dname<>'dtproperties'
left join syscomments e on acdefault=eid
left join sysproperties g on aid=gid and acolid=gsmallid
order by aid,acolorder
上面这个SQL是找到的数据库中所有表和列。
然后用游标,或其他的分析出所有的表和字段 拼接SQL然后查询吧。
这样的话,估计效率不是一般的慢。
建议还是找出具体那些字段中会存在你要查询的数据的具体表和列。然后进行查询,这样效率会快些。
上面那个2000中可以用
SQL SERVER 2005和2008存储表名和列名的表不一样,表结构也不一样
以上就是关于sqlserver 两表联合查询,且查询指定日期下,所有类别的数据,无数据为Null全部的内容,包括:sqlserver 两表联合查询,且查询指定日期下,所有类别的数据,无数据为Null、求教如何实现对SQLserver数据库的链接与查询、sqlserver如何多张表中搜索某个数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)