好吧我有一個特別討厭的聯合訂購問題,所以我們將不勝感激。在MS Access中訂購聯合查詢SQL
的情況是這樣的:
成員表與以下記錄(實際數據):
REI882
YUI987
POBO37
NUBS26
BTBU12
MZBY10
TYBW54
(這些在順序列出我希望他們從我的查詢回來。)
關於這些MemberID的構建有許多業務規則,我認爲這些與這種無關。它們具有歷史意義並且堅如磐石。我困在他們身邊。他們表示會員的資歷。
順序是從最後4個字符的ID完成,上行。就類別而言,ID的前兩個字符完全沒有意義。
所以最上面可能記錄是?? A001(最高級)和可能的最低記錄是?? ZZ99(至少高級)。
當我查詢我的成員表中的名單,我回去必須顯示最高級的頂部......顯然,一個標準的排序不起作用。這是我迄今:
其中第一個查詢與排序成員的ID只有1個字母交易。第二個涉及那些有2個主要字母的人。
SELECT * FROM (
SELECT Member.ID
FROM Member
WHERE (((IsNumeric(Mid([Member.ID],4,1)))=-1)) **check the 4th character is a digit
ORDER BY (Mid([Member.ID],3,1)), (Mid([Member.ID],4,1)), (Mid([Member.ID],5,1)), (Mid([Member.ID],6,1))
) t1
UNION
SELECT * FROM (
SELECT Member.ID
FROM Member
WHERE (((IsNumeric(Mid([Member.ID],4,1)))=0)) **check the 4th character is a letter
ORDER BY (Mid([Member.ID],3,1)), (Mid([Member.ID],4,1)), (Mid([Member.ID],5,1)), (Mid([Member.ID],6,1))
) t2
但是我得到了與聯盟的瘋狂結果!如果我單獨運行每個選擇 - 沒有問題,我的時髦(嚴重依賴訪問中的一些討厭的字符串操作!)排序完全按照我的要求工作。
我明白這是相當複雜的,但我希望我已經清楚地解釋它,有人是因爲某些榮譽爲計算出來!
編輯:從我的查詢結果是看似隨意:
YUI987
MZBY10
NUBS26
BTBU12
REI882
POBO37
TYBW54
我有一個類似的問題在那裏我有另一個程序不斷插入時間,當有人完成做什麼的,反正我格式化的ToString日期時間(「MM/DD/YYYY HH:MM/SS TT「)意外,如果你會發現有其中一個破折號‘:’是假設,反正現在我固定它,當我去對它進行排序#%$的,因爲某些字段都沒有!以正確的格式,我想,使其能夠根據時間來排序 – 2012-04-23 15:20:28
我的問題是幾乎完全一樣,因爲這問題;因爲我加了一個賞金我還不如給一些細節,使目前給出的答案 – 2012-04-23 15:46:36