上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 1 樓
|
發表於: 星期五 三月 03, 2006 12:09 pm 文章主題: 有方法在 select 中產生-名次欄嗎 ? |
|
|
我用 SQL Select 做了一個排名,請問要如何在 select 中產生一欄 名次 也就是 1,2,3… 啦
目前我是產生一個 dbf table 然後再去填入名次,有方法在 select 中一次產生,而不需要
二次加工嗎 ?
求教了,各位大大 … 謝謝。
我有用 搜尋 找 排名,名次 … 沒找到 |
|
回頂端 |
|
|
bin1x
註冊時間: 2004-08-27 文章: 462
第 2 樓
|
發表於: 星期五 三月 03, 2006 2:54 pm 文章主題: |
|
|
我會這麼作說,
SELECT .....ORDER .....INTO DBF FILENAME
用RECNO()來當名次
但同分的處理就不行了 |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 3 樓
|
發表於: 星期五 三月 03, 2006 3:20 pm 文章主題: |
|
|
謝謝 bin1x 我目前就是這樣做,只是覺得有點 …,所以想請問看看是否能直接在 SQL select 中一次產生。
對了在 select ... into table xxx 是產生一個獨立的 dbf ,可有什麼指令(參數)讓這個 dbf 直接就成為
某個 DBC 的 dbf
謝謝您。 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期五 三月 03, 2006 5:31 pm 文章主題: |
|
|
help 說:
------------------
DBF | TABLE TableName
[DATABASE DatabaseName [NAME LongTableName]] stores query results in a table. If you specify a table that is already open and SET SAFETY is set to OFF, Visual FoxPro overwrites the table without warning. If you don't specify an extension, Visual FoxPro gives the table a .DBF extension. The table remains open and active after SELECT is executed.
Include DATABASE DatabaseName to specify a database to which the table is added. Include NAME LongTableName to specify a long name for the table. Long names can contain up to 128 characters and can be used in place of short file names in the database. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
catjoke
註冊時間: 2003-06-16 文章: 175 來自: 香港
第 5 樓
|
發表於: 星期六 三月 04, 2006 9:05 am 文章主題: |
|
|
怎也要 二次加工, 因為 RECNO() 是不同的!!
SELECT 0000 AS 名次, * .... ORDER BY 總平均分 INTO TABLE TmpResult
REPLACE ALL 名次 WITH RECNO()
* 因為 原本 1號的 學生不一定是 考第一!!!! 以總平均分 順排後, 才以它的 RECNO() 為 名次!!
另一種做法 則是 預早給 學生成績.dbf 添了一個欄位為 名次:
SELECT 學生成績
SET ORDER TO 總平均分 DESC
GO TOP
Cur名次 = 1
DO
REPLACE 名次 WITH Cur名次
Cur名次 = Cur名次+1
SKIP
WHILE !EOF()
那麼不用 SELECT, 原 table 已是你想要的結果了! _________________ 喵喎~ 貓當然是 "茅" 的嘛! ^0^; |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 6 樓
|
發表於: 星期六 三月 04, 2006 2:22 pm 文章主題: |
|
|
是的 catjoke 大大,我知道了就是需要「二次加工」才行,感谢。
syntech 大大,谢谢你原来 INTO TABLE xxx database xxxx 就可以直接将 dbf 加入 DBC 中
谢谢,非常感谢。 |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 7 樓
|
發表於: 星期一 三月 06, 2006 12:47 pm 文章主題: |
|
|
各位大大,我發現 SQL select .... Into cursor READWRITE 在 9.0 多了這個參數 readwrite ,經吾人測試 curose 真的就可以 write some thing in it 不過好像只能改 9 筆,當改到第 10筆時就會發現錯誤,請問各位大大是否可以提一提有關這個「參數 READWRITE」,謝謝。 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 8 樓
|
發表於: 星期一 三月 06, 2006 1:11 pm 文章主題: |
|
|
7.0 就有了. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 9 樓
|
發表於: 星期二 三月 14, 2006 5:56 pm 文章主題: |
|
|
大大啊,
請問這個 參數 是怎麼用的啊,為何只能改 9 筆而已,
是否還有其它的用法? |
|
回頂端 |
|
|
jeff2004
註冊時間: 2005-10-30 文章: 27
第 10 樓
|
發表於: 星期二 三月 14, 2006 10:39 pm 文章主題: |
|
|
Abel 寫到: | 是的 catjoke 大大,我知道了就是需要「二次加工」才行,感谢。
syntech 大大,谢谢你原来 INTO TABLE xxx database xxxx 就可以直接将 dbf 加入 DBC 中
谢谢,非常感谢。 |
這句不明白啊,xxx是指table_name和database_name嗎?
光into就行了嗎?不用別的函數嗎? |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 11 樓
|
發表於: 星期五 三月 17, 2006 6:26 pm 文章主題: |
|
|
jeff2004 提到
1. xxx是指table_name和database_name嗎? 「是的」
2. 光into就行了嗎?不用別的函數嗎? 「是的」 用 into table/dbf 就行了 |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 12 樓
|
發表於: 星期六 三月 18, 2006 12:36 pm 文章主題: |
|
|
請問還有大大知道 readwrite 的用法嗎 ?
可否懇請提示呢? |
|
回頂端 |
|
|
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 13 樓
|
發表於: 星期六 三月 18, 2006 2:17 pm 文章主題: |
|
|
Abel 寫到: | 請問還有大大知道 readwrite 的用法嗎 ?
可否懇請提示呢? |
您是說在 9.0 下只能改 9 筆嗎?我從沒遇過,我從 7.0 開始就已大量使用 ...INTO CURSOR ... READWRITE 了,沒遇過有 9 筆的限制,想加幾筆就加幾筆,所以不知道您是什麼環境下造成的。 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
|
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 14 樓
|
發表於: 星期六 三月 18, 2006 4:14 pm 文章主題: |
|
|
謝謝 朱大哥
您真是一語驚醒夢中人,看見您說可以用,我馬上不斷檢查,終於發現原來當初為了要將
「名次欄值」設成「數字」用了以下的方法
.grd_temp3.RecordSource =[Select 0 as 排名, ……… Into Cursor temp3 READWRITE]
然後二次加工填上名次的數字
Scan
n_r = n_r+1
Replace 排名 With n_r
Endscan
於是就出現只能填入 9 筆的錯誤,現在我改成
.grd_temp3.RecordSource =[Select 0000 as 排名, ……… Into Cursor temp3 READWRITE]
就可以填入直到 9999 的數字了。
再次感謝,謝謝。 |
|
回頂端 |
|
|
yoncen
註冊時間: 2005-08-29 文章: 35
第 15 樓
|
發表於: 星期五 十二月 04, 2009 8:35 pm 文章主題: |
|
|
完全可以用一句SQL语法达到目的。例如:
create table test(name varchar(20),num decimal(10,2)
insert into test select 'jack',80
union all select 'john',90
union all select 'eric',80
union all select 'tony',78
union all select 'david',60
go
-- (1)方式1
select *,place = (select count(distinct num) from test where num >= a.num)
from test a
order by place
go
/* 结果
name num place
------------------------------------------
john 90 1
jack 80 2
eric 80 2
tony 78 3
david 60 4
*/
-- (2)方式2
select *,place = (select count(num) from test where num > a.num)+1
from test a
order by place
go
/* 结果
name num place
------------------------------------------
john 90 1
jack 80 2
eric 80 2
tony 78 4
david 60 5
*/
欢迎交流! QQ: 26792368 MSN: yoncen@hotmail.com _________________ 從事企業ERP開發,學會止境,精益求精。 |
|
回頂端 |
|
|
|