 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
480615
註冊時間: 2008-04-11 文章: 93
第 1 樓
|
發表於: 星期六 三月 12, 2011 3:34 pm 文章主題: 用select 命令把表竖的记录变成横的记录,为什么有二种结果? |
|
|
KA图是表的原始状态,极大部分考生每人报2科,但个别只报1科(9,11,15号记录),都是竖的记录。现要把它变成横的记录,就是把course中记录分别用KM1,KM2来表示,如K图。(这是用VFP做的)。现在改为SELECT 来做为什么不成功?
1。select card_no,max(iif((course='100'.or.course='200'.or.course='300'),course, ' ')) as km1,max(iif((course<>'100'.and.course<>'200'.and.course<>'300'),course,' ' )) as km2 from kc1 group by card_no。出现如KB图状态,在KM2中出现的不是三位数的内容,而是1或2,3。我想判断语句应是没有问题。
2。select card_no,max(iif((course='100'.or.course='200'.or.course='300'),course, ' ')) as km1,max(iif((course='100'.and.course='200'.and.course='300'),' ', course)) as km2 from kc1 group by card_no 出现KC图的状态。虽KM2粗看一下好象出现了要想得到的内容,但发现9,11,15号记录,只报100,没有报其它,但100同时出现在KM1与KM2中这也是不对。判断语句肯定不对,但好象出现想要的结果。不知如何能达到想要的结果呢?请高手指教。K图二张重复了。 |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 2 樓
|
發表於: 星期日 三月 13, 2011 8:24 pm 文章主題: |
|
|
没有高人指教呀可能我表达的不清楚吧?附上文件。请行家指,多谢了。http://vfp.sunyear.com.tw/files/ka__22270__o_______l__29366___24577__144.rar
附上kc.dbf.
480615 在 星期日 三月 13, 2011 11:59 pm 作了第 1 次修改 |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 3 樓
|
發表於: 星期日 三月 13, 2011 9:14 pm 文章主題: |
|
|
請把您的 kc1.dbf 掛上來吧 |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 4 樓
|
發表於: 星期一 三月 14, 2011 12:03 am 文章主題: |
|
|
kc.dbf已附上,第2楼也有,请给我诊断一下。还有如下的内容也请一同指教了。谢谢!
在vfp9中这样的语句为什么通不过?我是从别人用SQL把竖表变成横表的方法中引伸过来的,可能只准对纯的SQL。
select a.card_no,b.km1,c.km2 from (select card_no from kc group by a.card_no) a left join (select card_no ,course as km1 from kc where course='100'.or.course='200'.or.course='300') b on a.crad_no=b.crad_no left join (select card_no ,course as km2 from kc where course<>'100'.and.course<>'200'.and.course<>'300') c on a.card_no=c.card_no |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 5 樓
|
發表於: 星期一 三月 14, 2011 9:13 pm 文章主題: |
|
|
代碼: |
Select a.card_no , Max(a.km1) As km1 , Max(a.km2) As km2 ;
FROM (Select card_no,Iif(course $ '100,200,300',course,' ') As km1, Iif(! course $ '100,200,300',course,' ') As km2 From kc) a;
GROUP By a.card_no
|
|
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 6 樓
|
發表於: 星期一 三月 14, 2011 11:09 pm 文章主題: |
|
|
我试了一下,提示此句语法错误:FROM (Select card_no,Iif(course $ '100,200,300',course,' ') As km1, Iif(! course $ '100,200,300',course,' ') As km2 From kc) a; |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 7 樓
|
發表於: 星期二 三月 15, 2011 10:20 am 文章主題: |
|
|
您的 VFP 版本 ?
莫非是舊版不支援子查詢 ?
這段語句,在 vfp9.0底下是 ok 的 |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 8 樓
|
發表於: 星期二 三月 15, 2011 2:18 pm 文章主題: |
|
|
我是VFP90SP2_7423版。VFP6与VFP9都试了,同样的提示。我再去试一下。再向您请教。 |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 9 樓
|
發表於: 星期二 三月 15, 2011 6:05 pm 文章主題: |
|
|
SET ENGINEBEHAVIOR 90 ? _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 10 樓
|
發表於: 星期二 三月 15, 2011 6:08 pm 文章主題: |
|
|
你的命令在VFP9下成功了。我重新输入了一遍。太谢了。
下面的命令在VFP6及VFP9下都成功了,为什么KM2数字不全,原因是' '长度不够长,应是3个空格。
select card_no,max(iif((course='100'.or.course='200'.or.course='300'),course, ' ')) as km1,max(iif((course<>'100'.and.course<>'200'.and.course<>'300'),course,' ' )) as km2 from kc1 group by card_no |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|