请帮助,我想用新的升序号更新我的SortID,但无法弄清楚,如何,因为FileMaker的SQL非常有限。
我无法使用FileMaker执行此操作,因为我不想丢失当前的FoundSet。
我有一个FileMaker函数RecordNumber,我在这里使用。无论结果如何排序,它总是返回升序数。
这是我的表,使用RecordNumber:
SELECT SortID, RecordNumber FROM Beleg
WHERE Year ( Valuta ) = 2016
AND Ursprungskonto = 1210
ORDER BY SortID
产地:
.5 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
10.000001 11
10.000002 12
看起来很好。但我不能保留ORDER BY,当我使用UPDATE时,我收到错误。
但是,当我接受ORDER BY时,我的SortID将被错误地更新。当我离开ORDER BY时,这就是列表的样子:
SELECT SortID, RecordNumber FROM Beleg
WHERE Year ( Valuta ) = 2016
AND Ursprungskonto = 1210
产生这个:
2 1
3 2
.5 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
10.000001 11
10.000002 12
使用声明:
UPDATE Beleg SET SortID = RecordNumber
WHERE Year ( Valuta ) = 2016
AND Ursprungskonto = 1210
我在SortID中得到错误的值。 0.5应更新为1而不是3。
我输了。有关如何将升序数字写入我的SortID列的任何想法吗?
非常感谢!
加里
答案 0 :(得分:0)
感谢Ziggy Crueltyfree Zeitgeister Stackexchange我得到了答案!
他建议使用临时表将结果分解为多个步骤来存储结果:
CREATE TABLE sorting (sid numeric(10,10), rn int);
INSERT INTO sorting (sid, rn)
SELECT SortID, RecordNumber FROM Beleg
WHERE Year ( Valuta ) = 2016
AND Ursprungskonto = 1210
ORDER BY SortID;
UPDATE Beleg SET SortID = (SELECT rn FROM sorting WHERE sid=Beleg.SortID)
WHERE Year ( Valuta ) = 2016
AND Ursprungskonto = 1210;
DROP TABLE sorting;
当然!我只是在Filemaker中创建了表定义并保留它(让Filemaker以这种方式完成类型强制),并使用我的函数填充和删除它:RenumberSortID()。