根据不同的列值更改MySql输出

时间:2016-09-28 15:02:48

标签: mysql

我正在使用下面的查询,该查询为我提供了所有报告及其Excel格式ID 例如1 = Excel 2007,2 = XLSX,3 = CSV

SELECT Reportname AS 'ReportName', Excelformatid AS 'Excel Format' FROM reports;

是否可以在输出中获取实际格式而不是ID?

我浏览了下面的链接,但它告诉我如何只考虑特定的列值而不是全部来更改输出。

'IF' in 'SELECT' statement - choose output value based on column values

3 个答案:

答案 0 :(得分:1)

您可以使用CASE声明

SELECT
    Reportname AS 'ReportName',
    CASE
        WHEN Excelformatid = 1 THEN 'Excel 2007'
        WHEN Excelformatid = 2 THEN 'XLSX'
        WHEN Excelformatid = 3 THEN 'CSV'
    END CASE AS 'Excel Format'
FROM
    reports

有关文档

,请参阅here

答案 1 :(得分:1)

最简单的方法是创建一个查找表并进行连接,但是如果你没有那个可用,那么CASE就可以了。

SELECT 
    Reportname AS 'ReportName', 
    CASE Excelformatid
        WHEN 1 THEN 'Excel 2007'
        WHEN 2 THEN 'XLSX'
        WHEN 3 THEN 'CSV'
        ELSE 'Unknown'
    END AS 'Excel Format' 
FROM reports;

使用这样的数据实现查找表(让我们称之为'格式')会很容易:

+---------------+------------+
| Excelformatid | name       |
+---------------+------------+
| 1             | Excel 2007 |
| 2             | XLSX       |
| 3             | CSV        |
+---------------+------------+

然后你可以像这样使用连接:

SELECT Reportname, formats.name
FROM reports
LEFT JOIN formats USING(Excelformatid)

答案 2 :(得分:0)

尝试:

SELECT
    Reportname AS 'ReportName',
CASE
    WHEN Excelformatid = '1' THEN 'Excel 2007'
    WHEN Excelformatid = '2' THEN 'XLSX'
    WHEN Excelformatid = '3' THEN 'CSV'
END AS 'Formate Not Available'
FROM
    reports

此外,您可以制作masterformat表并加入报告,为您提供动态结果

  1. 创建表
  2. 插入数据
  3. 加入报告表