※ 引述《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
: 呈現這樣的狀態。因為要統計各選項的人數。
: 請問要怎麼寫這樣的語法呢?謝謝
選擇的英文是 Choice 不是 Choise
通常這種情況,會用:
SID CHOICE
1 A
1 B
1 C
2 B
2 C
3 A
3 C
這種做法的... 你的第二種做法,要是以後要加新選項
又要改 schema 了。
而你的問題,ANSI SQL 該沒有直接的解法。可以利用各
DBMS 的 string finding function. 比如 Oracle 的話,
insert into T2(S_SID, C_A, C_B, C_C)
select
sid,
decode(instr(choice, 'A'), 0, 0, 1),
decode(instr(choice, 'B'), 0, 0, 1),
decode(instr(choice, 'C'), 0, 0, 1)
from T1
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.103.235.35