Sql server 如何在SQL Server中跨3列或4列选择不同的值组合
我在SQLServer中继承了一个非规范化的表,有15列购买记录 |指数| TransNo |基金|成本|城市|邮政|银行|风险| YesNo | |1 | 1 |绿色| 34 |纽约|拉链|尚特| |2 | 12 |党| 345.23 |纽约| Zip | BOA | BS| |3 | 32 | Edu | 43 |波士顿| Zip | BOA | BS| |4 | 53 |图书| 56 | Atl | Zip |花旗| |5 | 422 | Groc | 12315 | Atl | Zip |粉色|Sql server 如何在SQL Server中跨3列或4列选择不同的值组合,sql-server,group-by,distinct,denormalization,Sql Server,Group By,Distinct,Denormalization,我在SQLServer中继承了一个非规范化的表,有15列购买记录 |指数| TransNo |基金|成本|城市|邮政|银行|风险| YesNo | |1 | 1 |绿色| 34 |纽约|拉链|尚特| |2 | 12 |党| 345.23 |纽约| Zip | BOA | BS| |3 | 32 | Edu | 43 |波士顿| Zip | BOA | BS| |4 | 53 |图书| 56 | Atl | Zip |花旗| |5 | 422 | Groc | 12315 | Atl | Zip
使用
insert-in..从distinct
构造中选择,以仅获取如下所示的不同记录
insert into mytable
select distinct Fund, City, Bank, null,null,null,....,null
from mytable
编辑:
根据你下面的评论
1) 如何填写列Risk_YesNo=Y的默认值
只需将其包含在SELECT
查询中[参见下面的示例]
2) 如何填写一个随机成本值,例如一列[成本]
您也可以在查询的SELECT
部分中包含这一点。如果您使用的是SQL Server 2008及更高版本,则可以使用函数来实现相同的功能
RAND()
函数返回一个float
类型结果。因此,如果您的Cost
列的类型为Integer
,则必须将其显式转换为cast(RAND()as int)
[参见下面的示例]
这样,您的查询将成为
insert into mytable(Fund, City, Bank, Risk_YesNo, Cost, ....)
select distinct Fund, City, Bank, 'Y', RAND(), null,null,null,....,null
from mytable
1) 如何填写列风险的默认值\u YesNo=Y 2)如何填写列的随机成本值,例如,对于列[cost]@aggie,请参见答案中的编辑。以后,一定要一次把所有的问题都清楚简洁地贴出来。