【问题标题】:Retrieve query column as row检索查询列作为行
【发布时间】:2011-08-23 14:37:26
【问题描述】:

我有一个包含以下列的表格:

BillNo -- 整数 账单日期——日期时间 数量——十进制 项目名称 -- varchar

我想检索这种格式的结果:

**项目名称...2011 年 1 月 ...2011 年 2 月 ....2011 年 3 月** 第 1 项 .................... 20 ..................19..................18 第 2 项 .................... 23 ....................10.................9

我尝试了显示正确结果的查询,但我想将第三列转换为具有不同值的行:

SELECT ITEMNAME, SUM(QTY), DATE_FORMAT(BILLDATE,'%M-%Y') FROM BILLITEMS
GROUP BY BILLDATE
ORDER BY YEAR(BILLDATE) DESC, MONTH(BILLDATE), ITEMNAME;

【问题讨论】:

    标签: mysql


    【解决方案1】:

    尝试使用下面的查询,但它适用于特定年份

    SELECT ITEMNAME, year_bill, SUM(jan), SUM(feb), .... from (
        select case when MONTH(BILLDATE) = 1 then QTY else 0 end as jan,
        case when MONTH(BILLDATE) = 2 then QTY else 0 end as feb,
        case when MONTH(BILLDATE) = 3 then QTY else 0 end as mar,
        ITEMNAME,
        YEAR(BILLDATE) as year_bill
    from BILLITEMS) as temp
    GROUP BY ITEMNAME, year_bill 
    

    【讨论】:

    • 但是年月不固定。
    • 我删除了第三个月,但它给出了错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“选择 case when MONTH(BILLDATE) = 2 then QTY else 0 end as feb, ITEMNAME,”附近使用正确的语法
    • 显示的QTY大部分为0。显示的结果不正确。
    • 能否提供查询结果、测试数据和预期结果。没有这个就很难回答。
    • 我想我应该把示例数据库邮寄给你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多