这个sql语句怎么写sqlserver

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个sql语句怎么写sqlserver相关的知识,希望对你有一定的参考价值。

表a的列有名称,属性1,属性2,属性3,属性4.。。属性n也就是n+1列。第一条数据有名称1,属性1,其他为null,第二条数据有名称1,属性2其他为空。。。第n条数据有名称1,属性n的数据其他为空,第101条有名称2,属性1,102条有名称2属性2。。。怎么合并这表里的数据,根据名称合并。也就是n条数据归属到1条数据。(相同名字的各条数据有值的属性不同)。

没环境没法测试,仅提供思路
思路:用游标通过系统表每次取一个字段update表a数据一次,将其它字段update成和该字段一样的值
DECLARE @fieldname varchar(200)
DECLARE test CURSOR FOR
select a.name from syscolumns a
join sysobjects b on a.id=b.id
where b.name='a' and a.colid<>1
--游标遍历系统表,查出a表所有字段,去掉第一个字段
OPEN test
FETCH NEXT FROM test into @fieldname
WHILE @@FETCH_STATUS = 0
BEGIN
update a set a.属性1=b.@fieldname,a.属性2=b.@fieldname,。。。a.属性n=b.@fieldname
from a a join a b on a.名称=b.名称
where b.@fieldname is not null
--这里可以改成通过系统条查出的字段名称拼成sql,这样就通用了,不管该表多少个字段也不用改sql了,时间关系我不写了.
end
CLOSE test
DEALLOCATE test

执行完后所有的属性字段的值都是一样的,随便取哪个字段都是你要的结果
注意,这段sql有条件限制,名称字段必须是该表的的第一个字段,如果不是的话把colid的值改成正确的
参考技术A 这样行么?

1> CREATE TABLE #test (
2> 名称 VARCHAR(2),
3> 属性1 VARCHAR(2),
4> 属性2 VARCHAR(2),
5> 属性3 VARCHAR(2),
6> 属性4 VARCHAR(2)
7> );
8>
9> INSERT INTO #test
10> SELECT 'A', '1', NULL, NULL, NULL UNION ALL
11> SELECT 'A', NULL, '2', NULL, NULL UNION ALL
12> SELECT 'A', NULL, NULL, '3', NULL UNION ALL
13> SELECT 'A', NULL, NULL, NULL, '4' UNION ALL
14> SELECT 'B', '5', NULL, NULL, NULL UNION ALL
15> SELECT 'B', NULL, '6', NULL, NULL UNION ALL
16> SELECT 'B', NULL, NULL, '7', NULL UNION ALL
17> SELECT 'B', NULL, NULL, NULL, '8';
18> GO
1>
2> SELECT
3> 名称,
4> MAX(属性1) AS 属性1,
5> MAX(属性2) AS 属性2,
6> MAX(属性3) AS 属性3,
7> MAX(属性4) AS 属性4
8> FROM
9> #test
10> GROUP BY
11> 名称;
12> GO
名称 属性1 属性2 属性3 属性4
-- --- --- --- ---
A 1 2 3 4
B 5 6 7 8
警告: 聚合或其他 SET 操作消除了 Null 值。
参考技术B ST_UserID是自增的,所以它也是只读的,不可改写,所以不能设置数据源,在插入或者更新数据的语句里面,也不可尝试对它进行修改,否则会出错。

补充:首先,我上面的回答已经告诉你了,不可以尝试改变ST_UserID,否则会出错。其次,你插入语句的最后是想插入当前时间是吧?这里不能这样调用C#的函数,而是要和前面一样,用参数的形式。到程序里面再给参数赋值。否则出错

sql server查询字段怎么写

可以在extended_properties视图中进行查看: sql:SELECT * FROM sys.extended_properties WHERE major_id = OBJECT_ID ('TABLENAME' ); 解释:以上语句就是从视图中获取到对象的所有描述信息。并且表名必须用大写(TABLANAME换成相应的表名)。 参考技术A selecet 字段名 from table 参考技术B select 字段1,字段2 from 表名

以上是关于这个sql语句怎么写sqlserver的主要内容,如果未能解决你的问题,请参考以下文章

多选择筛选查询SQL语句怎么写

这个SQL语句怎么写:将一个字段里的值复制添加到另一个字段中

MYSQL批量插入语句怎么写

当查询条件不确定的时候,怎么写SQL 语句

sql server,更改列名怎么写?如列A改名为列B

SQL语句怎么写?