我有一个有电话号码的表格。 一列包含区域中的第一个数字。 下一列包含该范围内的最后四位数字。 如何为每个单独的数字创建一行?
例:
202-366-1234(电话号码来自)
下一列有 1240(电话号码到)
我想将每个电话号码放在单独的行上。所以它们看起来像这样。
202-366-1234
202-366-1235
202-366-1236
202-366-1237
202-366-1238
202-366-1239
202-366-1240
有什么想法吗?
创建典型"数字"表的变体以保存所有可能的最后四位数字,例如
[PhoneSuffix]
suffix
------
0000
0001
0002
...
9998
9999
那么对于这样的输入表
[Table1]
ID PhoneFrom PhoneTo
-- ------------ -------
1 202-366-1234 1240
2 416-555-1212 1221
您可以使用如下查询:
SELECT Left(t1.PhoneFrom, 8) & ps.suffix AS PhoneNo
FROM Table1 t1, PhoneSuffix ps
WHERE ps.suffix Between Right(t1.PhoneFrom, 4) And t1.PhoneTo
您可以使用这个不需要新表的花哨的笛卡尔(乘法)查询:
SELECT DISTINCT
10*Abs([Deca].[id] Mod 10)+Abs([Uno].[id] Mod 10) AS Id,
Left([StartNumber],8) & CStr(Val(Right([StartNumber],4))+[Factor]) AS PhoneNumber
FROM
msysobjects AS Uno,
msysobjects AS Deca
WHERE
(((10*Abs([Deca].[id] Mod 10)+Abs([Uno].[id] Mod 10))<=Val([EndNumber])-Val(Right([StartNumber],4))));