SQL 怎样将数据根据数量字段拆分成同等数量一条一条的记录

数据库结构数据如下a01a02a03a041aa12.000wqw322aa23.000wesw123sql查询成下面这样的记录(SqlServer2005)sql该怎么... 数据库结构数据如下
a01 a02 a03 a04
1 aa1 2.000 wqw32
2 aa2 3.000 wesw123

sql查询成下面这样的记录(SqlServer2005) sql该怎么写啊
a01 a02 a03 a04
1 aa1 1.000 wqw32
2 aa1 1.000 wqw32
3 aa2 1.000 wesw123
4 aa2 1.000 wesw123
5 aa2 1.000 wesw123
展开
 我来答
Andy_Sun321
推荐于2017-11-26 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:725万
展开全部

可以这样来查询:

select s.a01, s.a02, 1.000 as a03, s.a04
from table_name s,
(
select 1.000 as val
union
select 2.000
union
select 3.000     
) c
where s.a03 >= c.val

当然,这里c可以用一个函数来代替,就是1, 2, 3, 4, ...这样一个数值的表. 可以用这个来代替c:

select row_number() over (order by id) as val
from sysobjects

这样查询变成:

select s.a01, s.a02, 1.000 as a03, s.a04
from table_name s,
(
   select row_number() over (order by id) as val
   from sysobjects  -- 这里可以根据需要改成记录数较多的表,就是产生数值列表而已
) c
where s.a03 >= c.val
我要注册和登录
2014-09-05 · TA获得超过451个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:418万
展开全部
DECLARE @ta TABLE (
a01 INT
,a02 VARCHAR(3)
,a03 FLOAT
,a04 VARCHAR(10)
)

INSERT INTO @ta
VALUES ( 1 ,'aa1' ,2.000 ,'wqw32' ) ,( 2 ,'aa2' ,3.000 ,'wesw123' )

SELECT * FROM @ta

SELECT row_number() OVER (ORDER BY a02) AS a01
,a02
,a03
,a04
FROM (
SELECT tmp.a02
,1.00 AS a03
,tmp.a04
FROM (
SELECT row_number() OVER (
ORDER BY t.object_id
) rn
FROM sys.tables t
) t1
JOIN @ta tmp ON t1.rn <= tmp.a03
) o
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兆拍名9909
2014-09-05
知道答主
回答量:19
采纳率:0%
帮助的人:17.5万
展开全部
select a01, a02, 1.000 , a04 from A CONNECT BY a03=PRIOR a03
AND LEVEL<= a03
AND PRIOR dbms_random.VALUE IS NOT NULL;
更多追问追答
追问
关键字 'BY' 附近有语法错误。这是怎么回事
追答
select a01, a02, 1.000 , a04 from A CONNECT BY a03=PRIOR a03
AND LEVEL<= a03
AND PRIOR dbms_random.VALUE IS NOT NULL;

我运行没有问题 你可以试试重新复制下, 我用的是oracle  不知道你的sql2005能不能用!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式