2011-05-18 53 views
0

选择与非标准组对不起,如果我重新发明轮子(也适用于我的英语),也许不可能与普通的香草查询,但我有“非现状的想法”,可能将行块Resulsets顶部,我希望这个SQL转储(MySql),为了更好地把它转换成账户和它的货币,也许这些会更好地诠释我想要的东西,真的子句通过不是我的杯子java订购用条款

DROP TABLE IF EXISTS `account`; 

CREATE TABLE `account` (
    `idAccount` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `idCustomer` int(10) unsigned DEFAULT NULL, 
    `idCustomerNumber` varchar(6) DEFAULT NULL, 
    `AccountNumber` varchar(12) DEFAULT NULL, 
    `Currency` varchar(3) DEFAULT NULL, 
    PRIMARY KEY (`idAccount`) 
) 

INSERT INTO `account` (`idAccount`,`idCustomer`,`idCustomerNumber`,`AccountNumber`,`Currency`) VALUES 
(1,1,'000001','000001JPY101','JPY'), 
(2,1,'100002','100002GBP101','GBP'), 
(3,2,'003333','003333EUR201','EUR'), 
(4,1,'100002','100002GBP102','GBP'), 
(5,1,'000001','000001EUR101','EUR'), 
(6,1,'000001','000001USD101','USD'), 
(7,1,'000001','000001USD102','USD'), 
(8,1,'100002','100002EUR101','EUR'), 
(9,1,'100002','100002USD101','USD'), 
(10,2,'003333','003333EUR202','EUR'), 
(11,2,'003333','003333JPY201','JPY'); 

Select * From Account Where CustomerNumber = '000001'

编辑:现在我希望这将是更好的... ...

我如何从表中创建选择与GROUP BY Currenncy和ORDER BY账户号码,并与可能产生结果集开头例如AccountNumbers与美元货币,行的其余部分将通过货币按字母顺序分组,并通过账户号码

有序

提取,将与被排序的列如下顺序美元 - 欧元 - 日元

编辑2:

我不好,对不起,那个,真的时候开始学习的主要语言

基本上如果我叫SELECT * FROM Account Where idCustomerNumber = '000001' Order by Currency, AccountNumber然后SQL解释返回

5,1,"000001","000001EUR101","EUR" 
1,1,"000001","000001JPY101","JPY" 
6,1,"000001","000001USD101","USD" 
7,1,"000001","000001USD102","USD" 

但现在我想以编程方式确定Resulset用美元帐户和帐户的静止开始将集团由货币再订购账户号码

+3

我不明白你的问题,因为语法和奇怪的句子。请尝试改进它。 – 2011-05-18 09:12:28

+0

什么是JAVA的链接? – 2011-05-18 09:13:53

+0

这个标签只是为了正确性,正如我在内容中提到的java.sql.Resulset – mKorbel 2011-05-18 12:12:18

回答

1

目前尚不清楚你想要什么。也许这个?:

SELECT 
    * 
FROM 
    account 
WHERE 
    idCustomerNumber = '000001' 
ORDER BY 
    Currency = 'USD' DESC 
    , Currency 
    , AccountNumber ; 
+0

简单,正确和足够的语法符合我的要求,这段代码也适用于我的其他Group,谢谢 – mKorbel 2011-05-18 12:19:56

0

我想这应该可以帮助你:

SELECT * FROM account 
WHERE idCustomerNumber = '000001' 
ORDER BY AccountNumber, CASE WHEN Currency = 'USD' THEN 0 WHEN Currency = 'EUR' THEN 1 WHEN Currency = 'JPY' THEN 2 ELSE 0 END 

当您试图小组,你需要考虑你打算用什么,你就合并列做,对于分组你需要使用汇总值,例如一般:让我们假设你有一个金额列:

SELECT AccountNumber, Currency, SUM(Amount) AS TotalAmount FROM account 
WHERE idCustomerNumber = '000001' 
GROUP BY AccountNumber, Currency 
ORDER BY AccountNumber, CASE WHEN Currency = 'USD' THEN 0 WHEN Currency = 'EUR' THEN 1 WHEN Currency = 'JPY' THEN 2 ELSE 0 END 

对于由美元则欧元则日元等,这将最好地在CurrencySortOrder表中定义,这样就可以不必改变所有的疑问进一步增加值和排序这样。