php - mysql:ROLLUP on TOP,SUM(FINANCIAL AMOUNT),然后按DATETIME DESC排序FINANCIAL AMOUNT列

标签 php mysql sql sql-order-by rollup

表1

CREATE TABLE tblFinancials
(
pkFinancialID int(11) NOT NULL AUTO_INCREMENT,
fkUserID int(11),
fkProfileID int(11),
fkFinancialEntryID int(11),
FinancialAmount decimal(10,2),
FinancialDateTime datetime
);

pkFinancialID fkUserID fkProfileID fkFinancialEntryID FinancialAmount FinancialDateTime 1 1 1 1 100.00 2014-06-07 07:00:00 2 1 1 2 100.00 2014-06-08 08:00:00


表2

CREATE TABLE tblFinancialEntry
(
pkFinancialEntryID int(11) NOT NULL AUTO_INCREMENT,
FinancialEntry varchar(255)
);

pkFinancialEntryID FinancialEntry 1 Credit 2 Debit


表3

CREATE TABLE tblUsers
(
pkUserID int(11) NOT NULL AUTO_INCREMENT,
UserName varchar(255)
);

pkUserID UserName 1 Test User


表4

CREATE TABLE tblProfiles
(
pkProfileID int(11) NOT NULL AUTO_INCREMENT,
fkUserID int(11),
ProfileName varchar(255)
);

pkProfileID fkUserID 1 1


期望的查询结果:

Total Due:      0.00
             -100.00   2014-06-07 07:00:00
              100.00   2014-06-08 08:00:00

最佳答案

我将把借方/贷方的事情留给您来合并:

select concat(
   case when T.pkFinancialID is null 
        then 'Total Due:     '
        else '               '
   end,  cast(FinancialTotalAmount as char(20))
   ) 

 , case when T.pkFinancialID is null
        then null
        else FDateTime
   end
from (
    select pkFinancialID
     , max(FinancialDateTime) as FDateTime
     , SUM(CASE WHEN fkFinancialEntryID = 1 
                THEN 1 
                ELSE -1 
       END * FinancialAmount) as FinancialTotalAmount
    from tblFinancials 
    WHERE tblFinancials.fkUserID = 1 
      AND tblFinancials.fkProfileID = 1 
    group by pkFinancialID with rollup
) as T  
order by case when T.pkFinancialID is null then 0 else 1 end
       , FDateTime;


Total Due: 0.00     (null)
         100.00     June, 07 2014 07:00:00+0000
        -100.00     June, 08 2014 08:00:00+0000

关于php - mysql:ROLLUP on TOP,SUM(FINANCIAL AMOUNT),然后按DATETIME DESC排序FINANCIAL AMOUNT列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153463/

相关文章:

mysql - 有人可以告诉我为什么这是查询非常慢吗?

php - Sql INSERT INTO 组合值和选择失败

mysql - 将 SQL 结果保存到变量

javascript - Ajax 脚本不起作用

php - mysql 获取学生考试排名

php - 是否有提供本地主机名的 PHP 函数或变量?

php - Codeigniter 2 脚手架

mysql - 选择特定组合

MySql 从多个表中选择数据

mysql - sql select - 另一个带有 NULL 的选择仅返回 NULL