where mc='a' or mc='bm'
解决方案 »
- Delphi高手进
- 让状态栏信息显示几秒后消失效果!
- list index out of bounds(1)
- 怎么编一个程序使这个窗体总是显示在最前面,最小化,切换他都在最外面。
- 如何将鼠标控制在一定范围内?
- 有什么办法可以知道一个服务名对应的可执行文件的全名?
- 急!!! 关于scktsrvr.exe在客户端的安装问题!! 在线等待!!!!!
- 几个小问题,谁先答出谁先得分!
- 我想手动添加一个TreeView1的节点,应该怎么写呀?
- 用webbrowser控件如何实现类似于IE中的历史和收藏夹的功能?
- 急,急,急!关于TWebBrowser的问题:请大家不吝赐教。
- 扩展名为mbs用哪种软件可打开,哪有下载?
What's means?
select t_1.bm,t_1.value from t_1,t_2
where t_1.mc='a'
wanwangzhiwang
这样的就可以了呀
where t_1.mc = 'a' ort_1.mc = 'bm'
字段不能确定,怎麽办??
如果是ORACLE搞定!
很不巧,是SQL ANYWHERE
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'T_1'这个语句是什麽意思?
我试了,语法错误!
select cname from syscolumns where tname='t_1'现在的问题是:怎样把字段名称放在字符串中或者放在数组中??
for index := 0 to query1.RecordCount - 1 do
list1.Add(FieldByName('cname').AsString);
insert into t_2(bm,a)
select bm,value from t_1
where t_1.mc in (select cname from syscolumns where tname='t_2')
不知道能不能行,呵呵。
那样不成,因为字段要一一对应,必须确定字段名称
tangliang813的方法效率不错呀!我那种反而不太好:)
你的select cname from syscolumns where tname='t_1'中列出的值是什么?
可以这样运行时加载:
tquery.sql.add('insert into t_2(bm,a) select t_1.bm,t_1.value from t_1 '+
format('where t_1.mc=%s',[t_2中的字段名]));
select cname from syscolumns where tname='t_1' 列出的是t_1中的所有字段,刚才书写错误,应该是 t_2to all:
我已经说过: t_2 中的字段名是不确定的,而且字段的个数也不确定,所以应该是
insert into t_2(bm,字段1,字段2,字段3....)
为了简单,用insert into t_2(bm,字段名),然后用union 连接
所以必须确定字段名称才能操作,
insert into t_2(bm,字段名称)
select bm,value from t_1 t1,t_2 t2
where t1.mc=t2.字段名
现在的关键问题是:字段名怎样表示???
对对对,没错!!!
我举一个例子:
在一个客户服务系统中有一张维护记录表表如下
t1 : (维护员,维护时间,客户,...);
表中有如下内容 张三,2001-05-28,'skljflk',....
李四,2001-05-28,'skljflk',....
王五,2001-05-27,'sfgsdgfsafas',...
...
生成统计表t2统计每人每天维护次数
t2 :
张三,李四,王五...
2001-05-27 0 0 1
2001-05-28 1 1 0
...
。
如果交叉的两相都不确定,有实现的办法吗?
若时间和人数都不确定,怎麽办?
还是在论坛上说吧
大家有什麽好主意吗?快拿出来吧!
to zy61,pure_cmh:
两位大哥,怎麽不说话!?
CREATE PROCEDURE [daily_proc] @rq1 datetime, @rq2 datetime AS
declare @command varchar(2000)
declare @fieldname varchar(100)
declare @ID char(5)--set @rq1 = '2001-03-01'
--set @rq2 = '2001-03-31'set @rq1 = convert(datetime,convert(char(8),@rq1,112))
set @rq2 = convert(datetime,convert(char(8),@rq2,112))--select @rq1,@rq2 select cs = count(jlbh),whrq = convert(datetime ,convert(char(8), whrq),112),whybh into #t1 from daily
where convert(datetime ,convert(char(8), whrq),112) between @rq1 and @rq2 + 1
group by whrq,whybhselect distinct 日期 = whrq into #t2 from #t1 declare c1 cursor LOCAL for select distinct whybh,e.ygxm from #t1,employee e where #t1.whybh = e.ygbhOPEN c1FETCH Next From c1 into @ID , @fieldnameWHILE @@FETCH_STATUS = 0BEGIN -- This is executed as long as the previous fetch succeeds. set @command = 'Alter table #t2 add [' + @fieldname + '] int' Exec(@command) set @command = 'Update #t2 set ['+ @fieldname + '] = 0 ' Exec(@command) set @command = 'Update #t2 set ['+ @fieldname + '] = #t1.cs from #t1,#t2 where #t1.whybh = ''' + @id + ''' and #t2.[日期] = #t1.whrq' Exec(@command) FETCH NEXT FROM c1 into @ID , @fieldName
ENDCLOSE c1DEALLOCATE c1drop table #t1select * from #t2drop table #t2To pure_cmh(不死鸟) :
我用单纯的Select语句无法实现
whrq 是维护日期
whybh 是维护员编号
whrq是个整型,所以要转换
为什麽?没有t2怎麽统计?