现在我有一个这样的表。使用for循环通过PL/SQL中的名称选择不同的列
Table name: itemlist Item year value1 value2 value3 value4 value5 ... value99 -------------------------------------- foo1 12 32 48 foo2 13 32 50 foo3 14 32 50 foo4 15 33 48 foo5 16 33 48 foo6 17 33 48 foo7 13 38 42 foo8 14 34 44 foo9 15 36 46 foo10 16 37 48
这里的任务,我想找出为每个值(例如值1,值等),有多少项目是高于35,有多少是低于35
是有一种方法循环的过程,所以我不必从每个值列中选择所有的东西。
这是选择其中一列的示例。
SELECT count(value1) as v1_number
FROM itemlist
WHERE v1_number > 35
UNION
SELECT v1_number
FROM itemlist
WHERE v1_number <35;
这样的工作,但我必须输入99次。
所以我的解决方案将是PL/SQL中的for循环。它看起来像这样:
BEGIN
FOR i in 1..99 LOOP
SELECT count(value || i) as v_number || i
FROM itemlist
WHERE v_number || i > 35
END LOOP
显然,这是行不通的,问题是我不知道如何与指数1-99串联值。
这是你当你非规范化的数据有问题。如果您每项,每年和每一行都有一行,那么查询就会很简单。 –
@eli,有没有任何答案可以帮助你?你可以评论或接受吗? – trincot