2017-04-10 9 views
0

私はこのすべてに間違っていると思いますので、私に知らせてください!選択クエリで合計する列名の動的選択を使用する方法?

私はこのようになりますテーブルを持っている:行は年齢の人口が続く領域を示して

Id | Region | 0 | 10 | 20 | 30 | 40 | 50 
----------------------------------------- 
01 | London | 24 | 45 | 38 | 29 | 36 | 49 
----------------------------------------- 
02 | Bham | 27 | 42 | 33 | 31 | 38 | 41 
----------------------------------------- 
03 | Lpool | 23 | 38 | 29 | 31 | 34 | 49 

は0-10、10-20、20-30などの範囲私は希望与えられた年齢層の母集団の合計を選択できるようにする。例えば。 10-40の場合:

SELECT (p.10 + p.20 + p.30) FROM Population p WHERE Id = 01 

カスタム範囲でこれを行うにはどうすればよいですか?例えば。年齢範囲の最小値と最大値を取るストアドプロシージャ。 SPは問題ではなく、合計する列の範囲を動的に定義する機能だけです。

+5

その場合には、おそらく '人口(ID、地域、年齢)テーブルを構築する方が良いだろう'ので、行の番号を表示する代わりに、複数の列の:何か他 はこれを試してみてください。 –

+0

これも私の考えでしたが、この現在のフォーマットで編成された素敵なCSVのデータを持っていて、それを変換するプロセスをどのようにトラッキングするのかがさらに分かりません!私が答えを得なければ、弾を噛んでアドバイスを取らなければならないかもしれません! – Drummad

+2

もしあなたがそのアドバイスを受けていないならば、長期的にはもっと弾を噛むでしょう。 –

答えて

-1

カスタム範囲で選択する場合は、次のようなクエリがあります。 - select *から までの間。

+1

しかし、これは**行**のためのものです。ここで**列**は0と10の間でなければなりません。 –

0

あなたは「AND」操作 を使用して、別の条件を与えることができ、あなたは、人口Pとの間のアンダースコアのいずれか不足している間違った

SELECT (p.10 + p.20 + p.30) FROM Population p WHERE Id = 01 

を行っています。

SELECT * FROM table WHERE BETWEEN 10 and 40 AND id=id_no 
+1

'FROM Population p'の表記は有効なSQLです。 'p'を' Population'に与えて、 'p.column'表記を使うことができます。 '10 'は有効な列名ではないので、' p.10'のような名前は疑わしいです。 MySQLでは、おそらくバックティックで名前を囲む必要があります: '' 'p.'''' '' ''(MarkDownの地獄です)、または標準のSQLでは、区切られた識別子 ' p "10" ' - あるいは、列の名前を' ages_0_9'、 'ages_10_19'などの有効な名前に変更します。 –

関連する問題