N行转多列 高分相求 已经学习过现有的行转列问题了

davidj 2007-05-14 07:03:30
N行转多列 高分相求 已经学习过现有的行转列问题了
文本数据格式如下:


购买时间 : 2007-5-11 15:27:0
订单号 : tcl09807
购买数量 : 2


------ 1-----------
序号:
FID: 0818500549
PIN: 46966847
---------------------

------ 2-----------
序号:
FID: 818500550
PIN: 04871316
---------------------

您购买的是:
购买时间 : 2007-5-11 15:30:0
订单号 : tcl09808
购买数量 : 3


------ 1-----------
序号:
FID: 0818500544
PIN: 524696684
---------------------

------ 2-----------
序号:
FID: 18500552
PIN: 66248713
---------------------

------ 3-----------
序号:
FID: 818500555
PIN: 66248713
---------------------
在一个SQL的表里表现为

FID PIN 购买时间 所属订单号 本次购买数量
0818500549 46966847 2007-5-11 15:27:0 tcl09807 2
818500550 04871316 2007-5-11 15:27:0 tcl09807 2
0818500544 524696684 2007-5-11 15:30:0 tcl09808 3
18500552 66248713 2007-5-11 15:30:0 tcl09808 3
818500555 66248713 2007-5-11 15:30:0 tcl09808 3
...............

以上为数据格式.表中视需要可以添加辅助列.或是新建中间表
...全文
311 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidj 2007-05-15
  • 打赏
  • 举报
回复
我想得到这段代码的结果....再请高手相助!
--TRY

create table orders(订单号 varchar(20) primary key,购买时间 smalldatetime,购买数量 int)
create table details(订单号 varchar(20),fid varchar(20),pin varchar(20),[no] int)
insert into orders
select 'tcl09807','2007-5-11 15:27:00',2 union select 'tcl09808','2007-5-11 15:30:00',3
insert into details
select 'tcl09807','0818500549','46966847',1 union
select 'tcl09807','818500550','04871316',2 union
select 'tcl09808','0818500544','524696684',1 union
select 'tcl09808','18500552','66248713',2 union
select 'tcl09808','818500555','66248713',3

select FID,PIN,购买时间,所属订单号=A.订单号,本次购买数量=A.购买数量
FROM ORDERS A,DETAILS B WHERE A.订单号=B.订单号

DROP TABLE ORDERS,DETAILS
davidj 2007-05-15
  • 打赏
  • 举报
回复
我的源数据只有一列啊
购买时间 : 2007-5-11 15:27:0
订单号 : tcl09807
购买数量 : 2


------ 1-----------
序号:
FID: 0818500549
PIN: 46966847
---------------------

------ 2-----------
序号:
FID: 818500550
PIN: 04871316
---------------------

您购买的是:
购买时间 : 2007-5-11 15:30:0
订单号 : tcl09808
购买数量 : 3


------ 1-----------
序号:
FID: 0818500544
PIN: 524696684
---------------------

------ 2-----------
序号:
FID: 18500552
PIN: 66248713
---------------------

------ 3-----------
序号:
FID: 818500555
PIN: 66248713
davidj 2007-05-14
  • 打赏
  • 举报
回复
对。就要这种表示形式

0818500549 46966847 2007-05-11 15:27:00 tcl09807 2
818500550      04871316 2007-05-11 15:27:00 tcl09807 2
0818500544 524696684 2007-05-11 15:30:00 tcl09808 3
18500552      66248713 2007-05-11 15:30:00 tcl09808 3
818500555   66248713 2007-05-11 15:30:00 tcl09808 3

云中客 2007-05-14
  • 打赏
  • 举报
回复
楼主的数据表让人看得有些糊涂,难道真是[自强不息]写得这种结构吗
wgsasd311 2007-05-14
  • 打赏
  • 举报
回复
--TRY

create table orders(订单号 varchar(20) primary key,购买时间 smalldatetime,购买数量 int)
create table details(订单号 varchar(20),fid varchar(20),pin varchar(20),[no] int)
insert into orders
select 'tcl09807','2007-5-11 15:27:00',2 union select 'tcl09808','2007-5-11 15:30:00',3
insert into details
select 'tcl09807','0818500549','46966847',1 union
select 'tcl09807','818500550','04871316',2 union
select 'tcl09808','0818500544','524696684',1 union
select 'tcl09808','18500552','66248713',2 union
select 'tcl09808','818500555','66248713',3

select FID,PIN,购买时间,所属订单号=A.订单号,本次购买数量=A.购买数量
FROM ORDERS A,DETAILS B WHERE A.订单号=B.订单号

DROP TABLE ORDERS,DETAILS
davidj 2007-05-14
  • 打赏
  • 举报
回复
我感觉这更是一行转多列的问题。。。我看了好多的历史贴子。只能说我水平太。。。。
davidj 2007-05-14
  • 打赏
  • 举报
回复
..就这么多的东西。你可以自由加上你需要的数据,如自填长的ID列。
zsforever 2007-05-14
  • 打赏
  • 举报
回复
用前台的数组进行行转列比较方便
wgsasd311 2007-05-14
  • 打赏
  • 举报
回复
楼主还需提供订单表和序号表之间的关联字段才能做得出来
qys2000 2007-05-14
  • 打赏
  • 举报
回复
我想想
wgsasd311 2007-05-14
  • 打赏
  • 举报
回复

--TRY

create table orders(订单号 varchar(20) primary key,购买时间 smalldatetime,购买数量 int)
create table details(订单号 varchar(20),fid varchar(20),pin varchar(20),[no] int)
insert into orders
select 'tcl09807','2007-5-11 15:27:00',2 union select 'tcl09808','2007-5-11 15:30:00',3
insert into details
select 'tcl09807','0818500549','46966847',1 union
select 'tcl09807','818500550','04871316',2 union
select 'tcl09808','0818500544','524696684',1 union
select 'tcl09808','18500552','66248713',2 union
select 'tcl09808','818500555','66248713',3

select FID,PIN,购买时间,所属订单号=A.订单号,本次购买数量=A.购买数量
FROM ORDERS A,DETAILS B WHERE A.订单号=B.订单号

DROP TABLE ORDERS,DETAILS

davidj 2007-05-14
  • 打赏
  • 举报
回复
自己顶一下吧

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧