【发布时间】:2011-08-18 18:27:52
【问题描述】:
我有一张这样的桌子:
ID NAME VAL
----------------------
1 a1*a1 90052
2 a1*a2 236
3 a1*a3 56
4 a1*a4 6072
5 a1*a5 1004
6 a2*a2 4576
7 a2*a3 724
8 a2*a4 230
9 a2*a5 679
10 a3*a3 5
11 a3*a4 644
12 a3*a5 23423
13 a4*a4 42354
14 a4*a5 10199
15 a5*a5 10279
给定一个给定 S = 5 的数字,我想查询
id 为:1,6,10,13,15 的行
他们是a1*a1,a2*a2,a3*a3,a4*a4 and a5*a5
我想要类似的东西:
INSERT #NEW_TABLE (ID,NAME,Value) (
SELECT ordinal, NAME, VAL FROM myTable where id = 1,6,10,13,15)
得到
ID NAME VAL
----------------------
1 a1*a1 90052
2 a2*a2 4576
3 a3*a3 5
4 a4*a4 42354
5 a5*a5 10279
有没有办法为任何给定的 S 做到这一点,也许使用动态 sql?
我得到了公式,我得到了这个:
S=5
ID formula
1 1
6 1+S
10 1+S+ (S-1)
13 1+S+ (S-1) + (S-2)
15 1+S+ (S-1) + (S-2) + (S-3)
有没有办法在 case 或 while 循环中做到这一点?
【问题讨论】:
-
S在这一切中代表什么? -
S 是一个数字,表示不同 att 的数量,在示例中,当
S=5时,我们有a1,a2,a3,a4 and a5.
标签: sql sql-server sql-server-2008 sql-server-2008-r2 dynamic-sql