mysql - 如何在 sql server 的行中显示 sql 标题列

标签 mysql sql sql-server

我想按列显示特定月份和年份的这些记录,如下表格式

Source   Total
Organic  1252   
Paid     121             
Email  Campaign 121    
Total   1494    

select Organic,Paid ,EmailCampaign ,Total    from tbl_leads where Month='Aug' and  Year='2015'     

下面是样本日期

Organic Paid    EmailCampaign   Total   ProjectName        Month    Year
4444    5555        2222       1111      demo project       Feb   2015
1252    121          121       1494      debug test         Aug   2015

最佳答案

在 Sql Server 中,您可以使用 Cross ApplyTabled Valued Constructor 来反透视数据

SELECT cs.Source,
       cs.Total
FROM   tbl_leads
       CROSS apply (VALUES ('Organic',Organic),
                           ('Paid',Paid),
                           ('EmailCampaign',EmailCampaign),
                           ('Total',Total)) cs(Source, Total)
WHERE  Month = 'Aug'
       AND Year = '2015' 

或者Generic Sql解决方案

SELECT 'Organic' AS Source,
       Organic   AS Total
FROM   tbl_leads
UNION ALL
SELECT 'Paid',
       Paid
FROM   tbl_leads
UNION ALL
SELECT 'EmailCampaign',
       EmailCampaign
FROM   tbl_leads
UNION ALL
SELECT 'Total',
       Total
FROM   tbl_leads 

关于mysql - 如何在 sql server 的行中显示 sql 标题列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741222/

相关文章:

mysql - 无法从查询中获取适当的值?

SQL Server 找出何时重命名表?

php - Laravel Eloquent 与逗号分隔时间戳之间的关系?

php - 使用 foreach 循环插入 MySQL 表中的重复记录集

sql - 有没有办法在 Slick 中进行多次插入/更新?

sql - 期初和期末余额总和

sql - 执行附加连接时,Count (*) 是否会扭曲所需的结果?

mysql - 从值创建列 - MySQL

mysql - 同步mysql中的存储过程

mysql - Where 子句中的未知列