我有一张桌子,目前看起来有点像这样 -
CASEID ¦ FORMNAME ¦ NAME ¦ VALUE
601554 ¦ CASEFORM ¦ Mond ¦ AAAA
601554 ¦ CASEFORM ¦ Tues ¦ BBBB
601554 ¦ CASEFORM ¦ Wedn ¦ CCCC
601554 ¦ CASEFORM ¦ Thur ¦ DDDD
Run Code Online (Sandbox Code Playgroud)
我现在想在SQL中创建一个新表,它将复制数据并完全改变其格式,如下所示 -
CASEID ¦ FORMNAME ¦ Mond ¦ Tues ¦ Wedn ¦ Thur
601554 ¦ CASEFORM ¦ AAAA ¦ BBBB ¦ CCCC ¦ DDDD
Run Code Online (Sandbox Code Playgroud)
原始表有大约400行,因此新表需要400列.
我的SQL知识肯定是有限的,但是当我需要解决方案时,我总是会犯错误.在这种情况下,我甚至不知道从哪里开始.有人能指出我正确的方向吗?
我编写了一个脚本,计划在一夜之间运行以复制昨天的表,删除昨天的表,创建新表,然后比较更改.这可以作为计划任务正常工作,但我真的很难找到允许用户动态执行它以进行测试的方法.
我真正想要做的是将它全部打包到存储过程中,因为我有一个eForm工具,它可以轻松地允许用户(非技术人员)通过点击执行该过程.
以下是脚本启动的示例.任何人都可以帮我把它变成一个存储过程,因为它显然不会接受像DROP TABLE这样的命令作为标准.
谢谢.
DROP TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY;
DROP TABLE SQL2005TEST.ABSENCELATESTSTART_YESTERDAY;
DROP TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY;
CREATE TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCEFULLDATADIFF;
CREATE TABLE SQL2005TEST.ABSENCELATESTSTART_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCELATESTSTART;
CREATE TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY
AS SELECT * FROM SQL2005TEST.ABSENCELATESTEND;
Run Code Online (Sandbox Code Playgroud) 无法弄清楚为什么这不起作用.
我试图分析一个包含"."的可变长度字符串.在里面的某个地方,然后剥去"." 和之前的所有人物.这是通过Web服务调用的.
在调试时,它可以正常工作,直到它在下面的最后一行,使用浏览器消息:"System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置.参数名称:length"
有人有任何想法吗?
下面的Code1是从eform传递给Web服务的输入变量.
Dim CharNo As New Integer
CharNo = Code1.IndexOf(".")
MyCodebookValueStrip.o_Code1 = Code1.Substring(CharNo + 1, (Code1.Length - CharNo))
Run Code Online (Sandbox Code Playgroud)