※ 引述《sanwind (疾風迅雷)》之銘言:
: 使用DB:MS SQL 2000
: 因為在做有關問卷的JOB,當中有遇到複選的問題
: 比如:
: 現有個TABLE A
: 內容為
: S_ID CHOISE
: 1 A,B,C
: 2 B,C
: 3 A,C
: 現想要使用SQL語法將之寫入另一個TABLE B
: 變成:
: S_ID CHOISE_A CHOISE_B CHOISE_C
: 1 1 1 1
: 2 1 1
: 3 1 1
: 呈現這樣的狀態。因為要統計各選項的人數。
: 請問要怎麼寫這樣的語法呢?謝謝
啊...我似乎試出方法來了...不過是在同一個TABLE中
就是在TABLE A中新增欄位CHOISE_A,CHOISE_B,CHOISE_C
使之成為:
S_ID CHOISE CHOISE_A CHOISE_B CHOISE_C
1 A,B,C
2 B,C
3 A,C
然後執行
UPDATE TABLE A
SET CHOISE_A = '1'
WHERE CHARINDEX('A',CHOISE) > 0; --CHARINDEX是判斷CHOISE欄位中,A的位置是多少
--因此只要是有A在,那就一定大於0囉
UPDATE TABLE A
SET CHOISE_B = '1'
WHERE CHARINDEX('B',CHOISE) > 0;
UPDATE TABLE A
SET CHOISE_C = '1'
WHERE CHARINDEX('C',CHOISE) > 0
如此一來,就會呈現下面這樣的狀態:
S_ID CHOISE CHOISE_A CHOISE_B CHOISE_C
1 A,B,C 1 1 1
2 B,C 1 1
3 A,C 1 1
這樣就可以簡單的計算出有選A,選B,選C的各有幾人了
唯一的缺點就是:UPDATE 滿吃資源的,如果資料量一大就會慢到不行了
如果版友有更好的作法,也請指導一下囉~ 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.1.29