把一表的字段名作为查询后的字段内容?---急!!!

cgrg 2003-10-19 09:45:44
如装配记录表Table1中有"开关产家""转速表产家""曲轴产家"等26个待统计记录数的字段,其中每字段有几个以上的产家名,用SQL根据字段分别分类统计,要得出如下表:

字段: 名称 产家 记录数
内容: 开关产家 a 5
开关产家 b 10
开关产家 c 5
转速表产家 q 12
转速表产家 w 8
曲轴产家 z 6
曲轴产家 x 9
曲轴产家 s 5
如此根据CheckBox选择要统计的字段,最多全部统计,形成如上报表打印。
问题:
1,如何表达字段名为查询后的新表的字段内容?
2,如何根据CheckBox的选择情况进行循环查询,第一个字段统计时创建一新表写入统计结果,第二个字段及以后只需将统计结果加入该新表就可以了。该循环如何写?


...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rdsdh 2003-10-20
  • 打赏
  • 举报
回复
AnsiString GetOneField(AnisString FieldName)
---->
AnsiString GetOneField(AnsiString FieldName) //更正
rdsdh 2003-10-20
  • 打赏
  • 举报
回复
2. ANSWER FOR QUESTION TWO:
AnsiString GetOneField(AnisString FieldName)
{ AnsiString strSubQuery;
strSubQuery = "UNION (Select '"+ FiedlName +"' AS 名称, "+ FiedlName +" AS 产家 ,Count(*) AS 记录数 Group By "+ FiedlName + " HAVING Count(*)>1 From 装配记录表)";
return strSubQuery;
}

//ckbKGCJ----TCheckBox for 开关产家, and so on.
//strQuery ----AnsiString
strQuery = "";
if(ckbKGCJ->Checked) strQuery = strQuery+GetOneField("开关产家");
if(ckbZSBCJ->Checked) strQuery = strQuery+GetOneField("转速表产家");
if(ckbQZCJ->Checked) strQuery = strQuery+GetOneField("曲轴产家");
......
if(!strQuery->IsEmpty())
{
strQuery= strQuery.Substring(6,strQuery.Length()); //删除第一个"UNION "
}

//在把strQuery赋予某个查询控件.
rdsdh 2003-10-20
  • 打赏
  • 举报
回复
1. ANSWER FOR QUESTION ONE:
(Select "开关产家" AS 名称, 开关产家 AS 产家,Count(*) AS 记录数
Group By 开关产家 HAVING Count(*)>1 From 装配记录表)
UNION
(Select "转速表产家" AS 名称, 转速表产家 AS 产家,Count(*) AS 记录数
Group By 转速表产家 HAVING Count(*)>1 From 装配记录表)
UNION
(Select "曲轴产家" AS 名称, 曲轴产家 AS 产家,Count(*) AS 记录数
Group By 曲轴产家 HAVING Count(*)>1 From 装配记录表)
UNION
......

吃饭....

huangjuliang 2003-10-19
  • 打赏
  • 举报
回复
有点麻烦!

思考中!
cgrg 2003-10-19
  • 打赏
  • 举报
回复
你注意到没有?
示例中"开关产家"、"转速表产家"、"曲轴产家"的总和都是20.实际中何止这点记录,有几万条呢!
所有的统计操作均在原表中进行。
主要问题:1,原表字段名转为结果表的字段内容的语句表达?
2,循环统计并将结果加入表的源代码?

welcome to Huangjuliang!
欢迎大家参与!感谢帮助!
cgrg 2003-10-19
  • 打赏
  • 举报
回复
原表:"机号""型号""开关产家""转速表产家""曲轴产家"等28个字段(零部件有26个),有20条装配记录,就是分别统计各零部件产家的数量,在一张表中打印出来。
原表: "机号""型号""开关产家""转速表产家""曲轴产家"...
原表中记录内容:001 4135 a w x ...
002 6135 c q z
003 4135 a q s
.
.
.
020 8135 b w z
例中原表共20条记录
过程:窗体中有26个CheckBox,如CheckBox[开关产家]需以产家名称统计则统计并在一空表中写入结果,再判断如CheckBox[曲轴产家]需以产家名称统计则统计将结果加入该表。
huangjuliang 2003-10-19
  • 打赏
  • 举报
回复
不太明白!
原来的表是怎么样的呢?
没有原来的表,怎么得出结果来?

把原表也贴一下吧!

对于第二个问题,可以这样来实现
if(CheckBox->Checked==true)

sql=" " ;//空的部分为要写的SQL语句

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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