全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:922
推到 Plurk!
推到 Facebook!

请教各位大大一段MSSQL

答題得分者是:st33chen
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-13 09:54:26 IP:122.233.xxx.xxx 訂閱
比如说,我的一张table有101条资料,栏位只有两个,分别是T1,T2,结构如下:
T1 T2
1
2
3
.
.
.
101
现在我想把它改为四个栏位,结构如下:
T1 T2 T3 T4
1 21
... ...
20 40
41 61
... ...
60 80
81 101
82 NULL
... ...
100 NULL
请问如何下mssql?
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-13 12:37:05 IP:122.116.xxx.xxx 未訂閱
您好,

試一下

select a.t1, a.t2, b.t1, b.t2
from table1 a left join table1 b
on a.t1-20=b.t1
order by a.t1
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-03-13 12:39:11, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-13 15:43:29 IP:122.233.xxx.xxx 訂閱
感谢st33chen大大的关注,不过,好象不行,结果出来变成如下了:






===================引 用 st33chen 文 章===================
您好,

試一下

select a.t1, a.t2, b.t1, b.t2
from table1 a left join table1 b
on a.t1-20=b.t1
order by a.t1
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-13 16:39:52 IP:59.112.xxx.xxx 訂閱
修正一下試試QQ
select a.t1, a.t2, b.t1, b.t2
from table1 a left join table1 b
on a.t1=b.t1-20
order by a.t1
------
額有朝天骨,眼中有靈光
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-13 17:19:19 IP:122.233.xxx.xxx 訂閱
多谢小傑克 大大,还差一点点,如我在主帖中所要求的那样,能否把黑色的那一部分去掉?

也就是说,把t1中的21至40,61至80,101至120等等,都不出现?




===================引 用 小傑克 文 章===================
修正一下試試QQ
select a.t1, a.t2, b.t1, b.t2
from table1 a left join table1 b
on a.t1=b.t1-20
order by a.t1
編輯記錄
luowy651 重新編輯於 2009-03-13 17:20:33, 註解 無‧
luowy651 重新編輯於 2009-03-13 17:22:23, 註解 無‧
luowy651 重新編輯於 2009-03-13 17:26:20, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-03-13 18:08:33 IP:122.233.xxx.xxx 訂閱
说明一下,其实我的目的是想在A4纸上能左右两排一起列印,否则,就两个栏位,一方面浪费纸,另一方面也不好看
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-03-13 19:44:06 IP:118.168.xxx.xxx 未訂閱
您好,

GOOGLE 一下
MSSQL CROSSTAB
或是
delphi multi-column report
說不定有好玩的東東

回到您目前由 sql 命令下手的解法.

想一下, 如果 20 筆為一個 page, 那 floor((a.t1-1) / 20) 就是 每一筆所在的 page number ( page_no )
現在, 您想把 page_no 0, page_no 1 印在第一頁, page_no 2, page_no 3 印在二頁, ... and so on.
也就是 page_no 0, page_no 2, page_no 4... 印在每頁的左邊
等於是選出來的資料的 page_no 要為 2 的倍數.

所以, 加一個 where 條件看看 ( mssql 好像沒有 int 函數, 還好 t1 欄為正數, 改用 floor )

where (floor((a.t1-1) / 20) % 2)=0

我想, 一般式為 where (floor((a.t1-1) / :records_per_page) % :big_columns_per_page)=0

參考一下囉.
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-03-14 04:28:39, 註解 無‧
st33chen 重新編輯於 2009-03-14 05:05:56, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-03-14 11:03:37 IP:219.82.xxx.xxx 訂閱
果然行了!
真是太感谢st33chen 大大了!解决了我一个大问题!而且还分析很详细!受教很多
也要特别感谢小傑克大大








===================引 用 st33chen 文 章===================
您好,

GOOGLE 一下
MSSQL CROSSTAB
或是
delphi multi-column report
說不定有好玩的東東

回到您目前由 sql 命令下手的解法.

想一下, 如果 20 筆為一個 page, 那 floor((a.t1-1) / 20) 就是 每一筆所在的 page number ( page_no )
現在, 您想把 page_no 0, page_no 1 印在第一頁, page_no 2, page_no 3 印在二頁, ... and so on.
也就是 page_no 0, page_no 2, page_no 4... 印在每頁的左邊
等於是選出來的資料的 page_no 要為 2 的倍數.

所以, 加一個 where 條件看看 ( mssql 好像沒有 int 函數, 還好 t1 欄為正數, 改用 floor )

where (floor((a.t1-1) / 20) % 2)=0

我想, 一般式為 where (floor((a.t1-1) / :records_per_page) % :big_columns_per_page)=0

參考一下囉.
系統時間:2024-05-15 7:28:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!