怎么把SQL中的语句转换成VC程序中里运行的CString 字符串语句

eden922 2019-04-01 09:56:23
怎么把SQL中的语句转换成VC程序中里运行的CString 字符串语句,本人基础很差,向大伙求教,万分感谢!
程序里用到要把竖向表格数据转换成横向的导出,网上查了一下,有不少例子,但是我不知道怎么把这些SQL语句转成CString字符串,我把SQL语句贴出来,大家伙帮我看看,最好直接给转换成出来。

实现动态的竖表转横表,以下代码在SQL Server中测试通过:
if exists(select name from sysobjects where name='test')
drop table test
go
Create table test (name char(10),km char(10),cj int)
go
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)


declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) '+km+''
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)
---------------------
作者:zhongguoren666
来源:CSDN
原文:https://blog.csdn.net/zhongguoren666/article/details/4807806
版权声明:本文为博主原创文章,转载请附上博文链接!

就是下面这一段,
CString strSQL;
strSQL.Format("select name,sum(case km when ''+km+'' then cj end) +km+ from (select distinct km from test) as a from test group by name");我这样写显然不对
...全文
169 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
eden922 2019-04-02
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
首先, 你这一大堆sql应该是一个存储过程(函数), 一般都不会直接放到sql中执行, 而是需要写到数据库中. 非要拼接字符串, CString也很容易, 注意 特殊符号转义就行 CString tStr; tStr ="insert test values('张三','语文',80)"; tStr += "insert test values('张三','数学',86)";
我只是想把下面的一段转换一下,数据表数据库里已经有的 declare @sql varchar(8000) set @sql = 'select name' select @sql = @sql + ',sum(case km when '''+km+''' then cj end) '+km+'' from (select distinct km from test) as a select @sql = @sql+' from test group by name' 因为我是程序中用的是accesss 现在发现不能用case when then 只能用 iif()代替,转换成固定横表的我研究出来了,但是怎么做成动态的横表,语句还是没想出来,请大神帮忙 固定横表的语句如下所示: strSQL.Format("select Sname,sum(iif([item] = '保教费',[money])),\ sum(iif([item] = '伙食费',[money])) from RECEIPT_DETAIL group by Sname");
xiaohuh421 2019-04-02
  • 打赏
  • 举报
回复
首先, 你这一大堆sql应该是一个存储过程(函数), 一般都不会直接放到sql中执行, 而是需要写到数据库中. 非要拼接字符串, CString也很容易, 注意 特殊符号转义就行 CString tStr; tStr ="insert test values('张三','语文',80)"; tStr += "insert test values('张三','数学',86)";

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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