首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Select with standard by in子句

Select with standard by in子句
EN

Stack Overflow用户
提问于 2011-05-18 17:09:36
回答 2查看 149关注 0票数 0

抱歉,如果我重新发明了轮子(和我的英语也),也许是不可能与普通的查询,但我有“无意义的想法”,这是可能的移动块结果集顶部,我希望这个SQL转储(MySql)和更好的不确定我转换为帐户和它的货币,也许这些会更好地说明我尝试,真正的子句Group by with Order by而不是我的一杯java

代码语言:javascript
复制
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 currency和Order by AccountNumber创建从表选择,并可以创建以美元货币开头的结果集,其余行将按货币按字母顺序分组并按AccountNumber排序

要提取将按以下顺序排序的行,请执行以下命令: USD - EUR - JPY

编辑2:

我的错,真的很抱歉,真的是时候开始学习主要语言了

基本上,如果我调用SELECT * FROM Account Where idCustomerNumber = '000001' Order by Currency, AccountNumber,那么SQL解释器将返回

代码语言:javascript
复制
5,1,"000001","000001EUR101","EUR"
1,1,"000001","000001JPY101","JPY"
6,1,"000001","000001USD101","USD"
7,1,"000001","000001USD102","USD"

但现在我想以编程方式确定结果集从美元帐户开始,帐户的其余部分将按货币分组,然后按AccountNumber排序

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 18:51:22

还不清楚你想要什么。也许是这个?:

代码语言:javascript
复制
SELECT
    *
FROM
    account
WHERE
    idCustomerNumber = '000001'
ORDER BY
    Currency = 'USD'  DESC
  , Currency
  , AccountNumber ;
票数 1
EN

Stack Overflow用户

发布于 2011-05-18 17:22:04

我认为这应该会对你有所帮助:

代码语言:javascript
复制
 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

通常,当你尝试分组时,你需要考虑如何处理你组合的列,对于分组,你需要使用汇总值,例如:假设你有一个Amount列:

代码语言:javascript
复制
 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表中定义,这样您就可以添加更多的值,而不必更改所有查询等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6042304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档