現在我有一個這樣的表。使用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