【问题标题】:Need change sql request需要更改sql请求
【发布时间】:2015-09-08 10:53:44
【问题描述】:

我有 sql 请求:

SELECT Bank_ID, Status, COUNT(Bank_ID) as Number 
FROM int_client_bank 
WHERE status = 30 or status = 50 or status = 35 or status = 37 
GROUP BY Bank_ID, Status;

并查看数据:

"Bank_ID"   "Status"    "Number"
"1"         "30"        "772"
"1"         "35"        "58"
"1"         "50"        "151"
"2"         "30"        "124"
"2"         "35"        "27"
"2"         "50"        "25"
"3"         "30"        "227"
"3"         "35"        "16"
"3"         "37"        "1"
"3"         "50"        "143"
"4"         "30"        "337"
"4"         "35"        "23"
"4"         "37"        "1"
"4"         "50"        "98"
"5"         "30"        "72"
"5"         "35"        "7"

{
    "data":[
        {"Bank_Id":"1","Status":"30","Number":"772"},
        {"Bank_Id":"1","Status":"35","Number":"58"},
        ...
    ],
    "success":true
}

我需要更改请求来放置这样的数据:

我需要 4 个状态 - 30、35、50、37

 Bank_ID Status30 Status35 Status50 Status37
     1        772       58       151      0
     2        30        27        0       0

{
"data":[
            {"Bank_Id":"1","Status30":"772","Status35":"58","Status50":"151","Status37":",},
{"Bank_Id":"2","Status30":"124","Status35":"27","Status50":"25","Status37":"0"},
...
       ],
       "success":true
       }

我该如何做那个 json 编码或 sql 请求??

【问题讨论】:

  • SO 不是来为你写 SQL 查询的,请自己试一试。

标签: php mysql json


【解决方案1】:

您可以使用 IF 语句结果的 SUM 来计算状态为特定值的行:-

SELECT Bank_ID, 
    SUM(IF(Bank_ID = 30, 1, 0)) as Status30,
    SUM(IF(Bank_ID = 50, 1, 0)) as Status50,
    SUM(IF(Bank_ID = 35, 1, 0)) as Status35,
    SUM(IF(Bank_ID = 37, 1, 0)) as Status37
FROM int_client_bank 
WHERE status IN (30, 50, 35, 37 )
GROUP BY Bank_ID;

【讨论】:

  • 您也可以省略IF(),例如SUM(Bank_ID = 30) 等,因为 MySQL 中的布尔表达式已经计算为 1 和 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多