【问题标题】:Represent MYSQL result with specific condition用特定条件表示 MYSQL 结果
【发布时间】:2020-01-24 03:09:31
【问题描述】:

我需要帮助以将我的查询结果表示为具有条件的特定报告 Here's my query result 得到结果后,我需要将其表示为具有某种条件的报告,它会是这样的:

City A - Company A

City A - Company B

City A - Company C - Service A

我不知道该怎么做,因为我真的是 MySQL 新手。 我想把查询放到 PHP 中。

提前致谢

【问题讨论】:

  • 请以可读的形式分享当前的表结构、示例数据、预期输出和您的查询尝试(如:不是图像)
  • 另外,请不要使用不相关的标签。这个问题与 phpMyAdmin 无关,也与 DateTime 对象的概念无关

标签: mysql sql datetime


【解决方案1】:

你可以这样做:

城市 A - 公司 A:

select pick_date, sum(Weight), 
sum(case when site = 'SiteA' then 1 else 0 end) as SiteA, 
sum(case when site = 'SiteB' then 1 else 0 end) as SiteB, 
sum(case when site = 'SiteC' then 1 else 0 end) as SiteC
From tbl
where company_name = 'CompanyA'
group by pick_date

对于城市 A - 公司 B,在查询中将 'CompanyA' 替换为 CompanyB

对于公司 C - 服务 A:

select pick_date, sum(Weight), 
sum(case when site = 'SiteA' then 1 else 0 end) as SiteA, 
sum(case when site = 'SiteB' then 1 else 0 end) as SiteB, 
sum(case when site = 'SiteC' then 1 else 0 end) as SiteC
From tbl
where company_name = 'CompanyC' and service_name = 'ServiceA'
group by pick_date

【讨论】:

  • 谢谢,我继续尝试构建更多动态条件,这是我的代码,但它没有显示结果 SELECT Pickup_date, GROUP_CONCAT(CONCAT('SUM(CASE WHEN site= ',site,' THEN ',weight,' ELSE 0 END) AS ', site)) FROM shippingtb_data WHERE company_name='CompanyA' AND service_name='ServiceA' ANDpickup_date BETWEEN '2020-01-01' AND '2020-01-03' group by取货日期
【解决方案2】:

这应该可以解决问题。如果您的原始查询也是来自 SQL,请将其放入临时表中,然后使用以下查询将得到 3 个答案。

SELECT
pickup_date
,SUM( CASE WHEN [site] = 'SiteA' THEN 1 ELSE 0 END) as [SiteA]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteB]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteC]  

FROM
tbl

WHERE
[city] = 'CityA'
AND
[company_name] = 'CompanyA'

GROUP BY
pickup_date


SELECT
pickup_date
,SUM( CASE WHEN [site] = 'SiteA' THEN 1 ELSE 0 END) as [SiteA]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteB]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteC]  

FROM
tbl

WHERE
[city] = 'CityA'
AND
[company_name] = 'CompanyB'

GROUP BY
pickup_date


SELECT
pickup_date
,SUM( CASE WHEN [site] = 'SiteA' THEN 1 ELSE 0 END) as [SiteA]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteB]  
,SUM(CASE WHEN [site] = 'SiteB' THEN 1 ELSE 0 END) as [SiteC]  

FROM
tbl

WHERE
[city] = 'CityA'
AND
[company_name] = 'CompanyC'
AND
[service_name] = 'ServiceA'

GROUP BY
pickup_date

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多