我有一个小问题,想了半天,请大侠出手帮助一下,谢谢。
我能用笨的方法解决,但是不知道简单的方法。见例子:
T1(序号,名称,数量)
1,A,100
2,B,50
3,C,10
T2(名称,每箱)
A,30
B,25
C,20
序号输出:
序号,名称,数量,箱量,箱序号
1、A,100,30,1
2、A,100,30,2
3、A,100,30,3
4、A,100,30,4
5,B,50, 25,1
6,B,50,25,2
7,C,10,20,1
不明白你说的意思,为什么A有四条记录,B两条,C就一条,后面输出的箱序号,这些你怎么来的。还有你想实现什么效果你也完全没说啊。
我i很想知道你这个结果是怎么想的,结果数据肯定是有问题的,问题又没有描述清楚
你是不是想要一个分组排序的效果????
```ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)
解释:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号
可以根据名称进行分组,然后根据序号、数量、箱量、箱序号进行排序
你是想列出T1的数量需要多少个箱子吗?
;with t1(ID,Code,Qty)AS(
select 1,'A',100 union all
select 2,'B',50 union all
select 3,'C',10
),T2(Code,Unit)AS(
select 'A',30 union all
select 'B',25 union all
select 'C',20
)
select t1.*,T2.Unit,sv.number from T1
inner join T2 on T1.Code=T2.Code
left join master.dbo.spt_values as sv on sv.type='P' and sv.number between 1 and CEILING(T1.Qty*1.0/T2.unit)
ID Code Qty Unit number
1 1 A 100 30 1
2 1 A 100 30 2
3 1 A 100 30 3
4 1 A 100 30 4
5 2 B 50 25 1
6 2 B 50 25 2
7 3 C 10 20 1