创建一张表,它的字段名要从其他表中记录中获得,sql该怎么写,好像有点难度。

deally 2007-11-17 01:36:25
如题,举个例子,比如我tableA 有一个字段是name,查询出来有4记录,也就有4个不同的name,(name1,name2,name3,name4)
现在我要创建一张表,表的字段名就是这4个name值,(name1,name2,name3,name4);以前没有碰到过这个问题,也很久没有摸数据库了。
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2007-11-19
  • 打赏
  • 举报
回复
1、用VBA循环取得字段名,再建表;
2、如格式固定的话:
SELECT distinct (select name from qqw where id=1) as name1,
(select name from qqw where id=2) as name2,
(select name from qqw where id=3) as name3,
(select name from qqw where id=4) as name4 into newtt
from qqw
OracleRoob 2007-11-19
  • 打赏
  • 举报
回复
是要生成物理的表?还是仅仅以你提供的表及数据,作相关的交叉查询?
OracleRoob 2007-11-18
  • 打赏
  • 举报
回复
按楼主要求生成表的代码,只用SQL语句无法实现,必须用VBA代码+SQL语句处理。

我上面给出的是在Access中的VBA代码。
leungzhq2000 2007-11-18
  • 打赏
  • 举报
回复
将需要创建表字段的值查询出来,作为create table 的创建字段的字符串就ok了,应该是用程序来实现.
部分C#代码 供参考
string strCreateTable="";
strCreateTable="Create table TableB(";
string selectString = "select distinct name from tableA where name!=''";
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = selectString;
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.read())
{
strCreateTable=strCreateTable+dr['name'].toString()+" text(10),";
}
//最后将strCreateTable 的字符串进行sql语句的标准化就可以了
//格式如下create table TableName(fieldName Type(value),....)
OracleRoob 2007-11-17
  • 打赏
  • 举报
回复

'根据tableA动态生成表tableB
Public Sub CreateTable()

Dim strCreateTable As String

Dim strSQL As String
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset

Set Cnn = CurrentProject.Connection

strCreateTable = "Create table tableB (id int "

strSQL = "select [Name] from tableA order by [id]"
Rst.Open strSQL, Cnn, adOpenKeyset, adLockReadOnly
If Not Rst.EOF Then
Rst.MoveFirst

Do While Not Rst.EOF
strCreateTable = strCreateTable & ", [" & Rst!Name & "] text(100) "

Rst.MoveNext
Loop
End If

strCreateTable = strCreateTable & ")"

Debug.Print strCreateTable

Cnn.Execute strCreateTable

MsgBox "OK"
End Sub
OracleRoob 2007-11-17
  • 打赏
  • 举报
回复
如果不是创建表,而只是查询交叉数据,可以用transform或iif()生成交叉表查询。

Access使用的是Jet-SQL。


JET SQL 帮助(jet4 access2000)下载地址

http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=


deally 2007-11-17
  • 打赏
  • 举报
回复
如题,举个例子,比如我tableA 有一个字段是name,查询出来有4记录,也就有4个不同的name,(name1,name2,name3,name4)
现在我要创建一张表,表的字段名就是这4个name值,(name1,name2,name3,name4);以前没有碰到过这个问题,也很久没有摸数据库了。
tableA
id name //字段
1 name1
2 name2
3 name3
4 name4
我要创建的表应该是这样的
id name1 name2 name3 name4 //字段
1
2
3

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧