2016-09-28 57 views
1

我使用下面這給了我所有的報告和例如它的Excel格式ID 1 = Excel 2007中,2 = XLSX,3 = CSV查詢基於不同的列更改MySQL的輸出值

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

是有可能在輸出中獲得實際的格式而不是ID?

我經歷了下面的鏈接,但它告訴我如何只考慮特定列值而不是全部值來更改輸出。

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

+0

一個條件是過於複雜。只需創建一個將格式作爲參考的表格,並將select語句轉換爲與該表格的連接。 – arkascha

回答

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

最簡單的方法是做一個查找表,做一個連接,但如果你不沒有那個可用的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) 
+0

我不幸沒有查詢表,但是您使用CASE的建議奏效。非常感謝 –

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. 加入隨着報告表