私は次の形式の情報を保持するSQLITEテーブルを持っています。最初の列はID、2番目はID_1、3番目はID_2、最後の列はボリュームです。SQLITEサフィックス
ID ID_1 ID_2 Volume
1000 111 0
1000 111 1
1000 111 2
1000 111 3
1000 112 0
1000 112 1
1000 112 2
1000 112 3
1000 113 0
10の以上のユニークなID
値、約2000ユニークID_1
値とID_2
のための4つのユニークな値があります。
最後に、選択したID、選択ID_1、選択ID_2のボリュームを選択します。これまでのことはうまくいく。出力フォーマットは - ID、ID_1、ボリュームでなければなりません。
私が混乱しているのは、以下のデータを取得することです。そうであるように、次に指定したIDとID_1について
、ID_2 IF = 1、
Volume = (Volume for ID, ID_1 and ID_2 = 1) - (Volume for ID, ID_1 and ID_2 = 2)- (Volume for ID, ID_1 and ID_2 = 3)
そうでない場合、印刷体積:
Iは、以下のデータを必要とします。
私はこのデータをcsvファイルで抽出するためにpythonを使用しています。私はvalue1とvalue2にIDとID_1を格納しようとしており、それをサブクエリで使用しようとしていますが、動作していないようです。
私のコードは次のようになります。
import os
import sqlite3
import shutil
import csv
import time
import datetime
from pprint import pprint
value1 ="va"
value2 ="pa"
working_dir = "C:\Path"
aimsun_db_filename = os.path.join(working_dir,"File.sqlite")
conn = sqlite3.connect(filename)
c= conn.cursor()
SQL = '''
SELECT
TableName.ID '''= value1 +''',
TableName.ID_1 '''= value2 +''',
CASE WHEN ID_2 = 1 THEN
(SELECT TableName.volume
FROM TableName
WHERE
ID_2 = 2 and
TableName.oid = '''+value1+''' AND
TableName.did = '''+value2+'''
)
WHEN ID_2 = 2 THEN
TableName.volume
WHEN ID_2 = 3 THEN
TableName.volume
ELSE
"Other"
END,
FROM TableName
WHERE
AND NOT sid = 0
AND NOT ent = 0
'''
with conn:
c = conn.cursor()
c.execute(SQL)
while True:
row = c.fetchone()
if row ==None:
break
何だろうがたとえば、 'ID_1 = 2'と' ID_2 = 3'の場合はどうなりますか?私はあなたがしようとしていることに対する明白なパターンを見ていない。 –
ID_2 = 2代表車; ID_2 = 3大型車両を表します。 ID_2 = 1すべての車両を表します。だから、最終的に私はバスのためのボリュームを与える1-(2 + 3)が欲しい。 – Neyotalks
ID_2 = 0はすべてのPCUを表します – Neyotalks