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 展开
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 展开
3个回答
展开全部
可以这样来查询:
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
展开全部
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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select a01, a02, 1.000 , a04 from A CONNECT BY a03=PRIOR a03
AND LEVEL<= a03
AND PRIOR dbms_random.VALUE IS NOT NULL;
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能不能用!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询