SQL循环修改字段类型

SQL循环修改字段类型,第1张

create table x

(

a1 varchar(20),

a2 varchar(20),

a3 varchar(20),

a4 varchar(20),

a5 varchar(20),

)

declare @sql varchar(max)

declare @j int

set @j =1

declare @i int 

select @i= count(name)  from sys.columns where object_id=object_id('x')

while  (@j<=@i)

 begin

 set @sql ='ALTER TABLE x  ALTER COLUMN [a'+convert(varchar(20),@j)+'] [int] NULL'

 Exec (@sql)

 set @j=@j+1

end

数据透视表计算字段出现“错误”的现象及原因

在Excel数据透视表中添加计算字段进行计算时,有时会遇到计算“错误”的情况。例的数据源创建数据透视表后,添加计算字段“字段1”,公式为“数量*单价”,目的是为了得到各种“商品”的合计金额。而在数据透视表中却得到错误的结果。

例如数据源中“商品编号”为“A51052”的记录有3个,其合计金额应为“50*100=500”,而“字段1”返回的金额为“15000”。

另外,总计行中计算字段的计算结果也是如此。这是因为,计算字段在计算时是先对字段中相关行的值求和,然后按照公式得到乘积,而不是先把两个字段相关行的值相乘后再对积求和,如本例“商品编号”“A51052”的计算结果是“(10+20+20)*(100+100+100)=15000”,因而会返回“错误”。

数据透视表计算字段出现“错误”的解决办法

首选在数据源中添加一个辅助列,如“金额”,输入公式让各行都返回“单价”与“数量”的乘积,再将该字段添加到数据透视表中就没有上述问题了。如果由于某种原因不便在数据源中添加新的字段,可以采用下面的方法,以Excel2013和上图数据为例。

方法一:用SQL

1、保存工作簿,单击“数据→现有链接→浏览更多”,在d出的对话框中找到并选择当前工作簿,单击“打开”,d出“选择表格”对话框。如下图,本例的数据在“Sheet1”工作表的A1:D29区域中,第一行为标题。因而选择“Sheet1$”,并保持勾选“数据首行包含列标题”,单击“确定”。

2、在d出的“导入数据”对话框中选择“数据透视表”,并设置数据的存放位置,单击“属性”按钮。

3、接着在“链接属性”对话框中选择“定义”选项卡,在“命令文本”中输入SQL命令:

返回“导入数据”对话框,单击“确定”,然后在新创建的数据透视表中添加所需字段,可以看到,新增的“金额”字段可以返回正确的结果。

方法二:用PowerPivot

1、首先要在Excel中加载PowerPivot加载项:单击“文件→选项→加载项”,在“管理”右侧的下拉列表中选择“COM 加载项”并单击“转到”,d出“COM加载项”对话框。或者单击“开发工具→COM加载项”d出该窗口。在其中选择“Microsoft Office PowerPivot for Excel 2013”选项后确定。PowerPivot选项卡即会出现在Excel功能区中。

2、选择数据源中的某个单元格,单击“插入→数据透视表”创建数据透视表,在“创建数据透视表”对话框中勾选“将此数据添加到数据模型”,单击“确定”。

Excel创建了一个模型表名称为“区域”的数据透视表,如数据透视表字段列表。

3、选择“PowerPivot→计算字段→新建计算字段”,d出“计算字段”对话框,将“计算字段名称”设置为一个有意义的名称,如本例“金额”,在“公式”下方的文本框中输入DAX公式:

=sumx('区域',[单价]*[数量])

SUMX函数为数据分析表达式(即DAX:用于PowerPivot中定义计算的公式表达式语言)中的一个函数,返回表中每一行计算的表达式之和。单击“确定”,数据透视表字段列表中会添加一个新的字段“金额”。将所需的字段如“商品编号”、“单价”、“数量”、“金额”等添加到数据透视表,其中“单价”字段添加到行区域。

可以看到,数据透视表中的“金额”即为我们所需的结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9976053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存