2015-01-21 61 views
0

这是我的程序在输出中有$不会打印。 我会用正确的了Syntex为“$” +,但它不工作

SELECT USERS.ID,CONCAT(USERS.FIRSTNAME,' ',USERS.LASTNAME)AS USERNAME, 
    ('$'+ SUM(CPS_HISTORY.CHARGED_AMOUNT+CPS_HISTORY.TRANSACTION_FEE+CPS_HISTORY.SERVICE_CHARGE+CPS_HISTORY.COMBO_PAK_PRICE))AS REVENUE FROM USERS JOIN CPS_HISTORY ON CPS_HISTORY.SUBSCRIBER_ID = USERS.ID GROUP BY USERS.ID ORDER BY REVENUE DESC LIMIT 5; 

+---------+---------------+---------+ 
| ID  | USERNAME  | REVENUE | 
+---------+---------------+---------+ 
| 1803399 | Michael Rowan |  772 | 
| 1697091 | NULL   |  676 | 
| 1790000 | ree Green  |  626 | 
| 1766654 | Jose M NUFIO |  625 | 
| 1731854 | Ashlee Durgin |  622 | 
+---------+---------------+---------+ 
5 rows in set, 13305 warnings (0.15 sec) 

与concat函数的问题是:改变的数据。

+---------+-----------------+---------+ 
| ID  | USERNAME  | REVENUE | 
+---------+-----------------+---------+ 
| 1753814 | Joseph Hearn | $99  | 
| 1806377 | Gideon Anderson | $99  | 
| 1800992 | Camryn Revitte | $99  | 
| 1802344 | Tanner Chik  | $99  | 
| 1594358 | NULL   | $99  | 
+---------+-----------------+---------+ 
5 rows in set (0.00 sec) 
+0

将upcase更改为locase。 – 2015-01-21 05:57:44

+0

@AvinashRaj然后呢? – glglgl 2015-01-21 07:03:39

+0

对所有的downvoters:有什么意义?你不明白这个问题吗? – glglgl 2015-01-21 07:04:11

回答

1

使用的concat到concatinate的值:

SELECT USERS.ID,CONCAT(USERS.FIRSTNAME,' ',USERS.LASTNAME)AS USERNAME, 
    concat('$', SUM(CPS_HISTORY.CHARGED_AMOUNT+CPS_HISTORY.TRANSACTION_FEE+CPS_HISTORY.SERVICE_CHARGE+CPS_HISTORY.COMBO_PAK_PRICE))AS REVENUE 
    FROM USERS JOIN CPS_HISTORY ON CPS_HISTORY.SUBSCRIBER_ID = USERS.ID GROUP BY USERS.ID ORDER BY REVENUE DESC LIMIT 5; 
+0

它将打印不正确的答案。总和的值被改变。并在所有行中保持相同。所以concat()函数有问题。 – 2015-01-21 06:31:29

+0

你能否在你的问题和这两个表格的表格描述中添加一些示例数据? – Jens 2015-01-21 06:36:56

+0

我在我的问题中添加它。 – 2015-01-21 06:56:57

0

的数据不改变,只有类型。

您正在通过您的REVENUE列进行订购,该列是之前的数字,但现在在CONCAT()之后,它是一个字符串。而$99作为字符串出现在$772之前(如果排序DESC)。

解决办法有两个:

  1. 添加在应用程序中$相反在SQL或
  2. 与子查询其数据是否采摘和工作排序在内部查询和格式化外面的一个。

    喜欢的东西

    SELECT ID, USERNAME, CONCAT('$', REVENUE) AS REVENUE FROM 
        (SELECT USERS.ID,CONCAT(USERS.FIRSTNAME,' ',USERS.LASTNAME) AS USERNAME, 
        SUM(CPS_HISTORY.CHARGED_AMOUNT+CPS_HISTORY.TRANSACTION_FEE+CPS_HISTORY.SERVICE_CHARGE+CPS_HISTORY.COMBO_PAK_PRICE)) AS REVENUE 
        FROM USERS JOIN CPS_HISTORY ON CPS_HISTORY.SUBSCRIBER_ID = USERS.ID 
        GROUP BY USERS.ID ORDER BY REVENUE DESC LIMIT 5) AS INNER 
    

    应该做的。 (未经测试!)

相关问题