sql-SQL条件编写,单记录多属性合并结果

问题描述

SQL条件编写,单记录多属性合并结果
表中的记录如下所示:
用户编号 属性
001 A
001 B
002 A
002 C
002 E
需要的记录如上:

001 A B
002 A C E

如何编写SQL语句?

解决方案

这个分组,拼接值就可以了,你的是什么数据库啊?

解决方案二:
假如是mysql的比较简单
SELECT group_concat(属性),用户编号 FROM group by 用户编号

解决方案三:
自己参考我发的吧,你根据你自己的数据库来,mysql的就比较简单

解决方案四:
--SQL SERVER的办法
select 用户编号 [属性]=stuff((select ' '+[value] from tb where 用户编号=t.用户编号 for xml path('')) 1 1 '')
from tb t
group by 用户编号

解决方案五:
select 用户编号 [属性]=stuff((select ' '+[value] from tb where 用户编号=t.用户编号 for xml path('')) 1 1 '')
from tb t
group by 用户编号

时间: 2024-10-31 02:15:27

sql-SQL条件编写,单记录多属性合并结果的相关文章

表单-ASP连接SQL数据库,并增加记录,问下这段ADD.ASP错哪儿了?

问题描述 ASP连接SQL数据库,并增加记录,问下这段ADD.ASP错哪儿了? 下面是add.asp,问下错哪儿了? <% set conn=Server.CreateObject("ADODB.Connection") conn.open "provide=SQLOLEDB;DATA SOURCE=127.0.0.1;UID=sa;pwd=lala;DATABASE=dog" strsql="insert into dogarticle (titl

sql 根据条件更新记录 case then

sql 根据条件更新记录 case then第一个利用存储过程来做 declare @str varchar(500) set @str=@str+'update 表名' if state=1   set @str=@str+' set state=0' else    set @str=@str+' set state=1' set @str=@str+' where moduleroleid='1' exec(@str) // update 表名 set state=0 where modu

Access数据库基于时间sql盲注的实现记录

  Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统.本文我们来看看Access数据库基于时间sql盲注的实现记录. 概述 众所周知,access数据库是不支持基于时间的盲注方式,但是我们可以利用access的系统表MSysAccessObjects,通过多负荷查询(Heavy Queries)的方式实现. 初步探究 我们以SouthIdcv17数据库为例 执行 select * from Southidc_About ,返回结果如下图. 如何实现time

用ASP与SQL Server2000编程分页显示记录的通用方法

server|server2000|sql|编程|分页|显示 用ASP与SQL Server2000编程分页显示记录的通用方法 在工作中,因为需要,需要一个网络查询系统,所以进行了网页设计.以前进行网页编程时经常使用PHP语言和MySQL数据库,此次,因为限制,必须用ASP语言和SQL Server2000,所以对此进行了一些研读.发现,SQL Server和ASP配合没有象MySQL那样的   Select ... limit ... 语句从某条记录开始只取需要的记录的功能,显得比较不方便.

有用的SQL语句(删除重复记录,收缩日志)

删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct * into #table_name from table_name delete from table_name select * into table_name from #table_name drop table #table_name 与此相关的是"select into"选项,可以在数据库属性 对话框中,勾起来此项,或者在Query Analyzer中执行 ex

编码-sql表中如何实现几个记录的值合并处理为另一条记录的值,有嵌套!

问题描述 sql表中如何实现几个记录的值合并处理为另一条记录的值,有嵌套! 下列记录中,编码3.4的记录合并为编码2,编码2和编码5的记录合并为编码1的记录,如果做到实时合并?语句很简单,但逐级合并可能会产生结果不一致现象,大家怎么解决的? 编码 字段1 字段2 字段3 父编码 1 20 30 50 Null 2 10 12 20 1 3 7 10 6 2 4 3 2 14 2 5 10 18 30 1 解决方案 如果只是这两个条件的记录要合并,那就sum+group by两次就好了 解决方案二

PL/SQL的进阶----编写分页过程

PL/SQL的进阶----编写分页过程 介绍 分页是任何一个网站(bbs,网上商城, blog)都会使用到的技术,因此学习 pl/sql 编程开发就一定要掌握该技术.   ①无返回值的存储过程 古人云:欲速则不达.首先是掌握最简单的存储过程,无返回值的存储过程: 案例:现在有一张表,字段有"书号,书名,出版社".请编写一个存储过程,可以向book表添加书,要求通过JAVA程序调用该过程. ----book表 SQL>create table book (boodId number

sql server随机获取表记录sql语句

sqlserver随机取记录方法只要用newid()即可 sqlserver已经有自带的一个newid()函数,它返回的是一个GUID,因此我们可以获取表记录时按这个newid()进行排序,因为newid()的结果是每次都不一样的,所以这样子查询的结果保证了每次排序的结果均是不一样的,以下以Northwind库中的orders表为例写一下获取10条随机记录: 语法  代码如下 复制代码 select TOP N * From TABLE Order By NewID() 例 SELECT TOP

MS SQL Server带有时间的记录怎样查询

原文:MS SQL Server带有时间的记录怎样查询 比如某一张表[A]有一个保存日期包含时间字段[B],如果以这个段[B]作查询条件对数据记录进行查询.也我们得花些心思才能查询到我们想得到的记录. 现在我们需要查询这天2014-06-21的所有记录: SELECT * FROM [A] WHERE [B] = '2014-06-21' 上面的语法,将查询不到任何记录.也许会有网友想到使用BETWEEN: SELECT * FROM [A] WHERE [B] BETWEEN '2014-06