2014-01-06 19 views
1

SQL表結果像這樣如何更改行和列在SQL表

InvoiceId Tax1 Tax1value Tax2 Tax2Value Tax3 Tax3Value 
10   GST 2.0  PST 2.8  GRT  3.1 

查詢以獲得上述結果

SELECT InvoiceId,Tax1,Tax1value,Tax2,Tax2value,Tax3,Tax3Value 
FROM Invoice 
WHERE InvoicId=10 

現在我需要的表輸出一樣的打擊同一張發票上表

GST PST GRT 
2.0 2.8 3.1 

如何獲得像這樣的結果

回答

0

有點像?

SELECT Tax1value AS GST, Tax2value AS PST, Tax3Value AS GRT 
FROM Invoice 
WHERE InvoiceId = 10 

http://www.1keydata.com/sql/sql-as.html

所述關鍵字作爲用於將別名分配給所述列或表。

結果會;

| GST | PST | GRT | 
|-----|-----|-----| 
| 2 | 3 | 3 | 

這裏一個SQL Fiddle DEMO

+0

格尼爾我Dont'need靜態ASIGN價值就像Tax1value AS GST。我需要Dynamic。 – Gurunathan

+0

@Gurunathan你想在你的sql查詢工作時更改列名稱? –

+0

Gonul我需要運行這個查詢條件像WHERE InvoiceId = 56 – Gurunathan

0

看到這個question,也許可能對你有用。

應用到你的情況是這樣的:

SELECT 
    invoiceid, 
    MAX(CASE WHEN (tax1= 'GST') THEN tax1value ELSE NULL END) AS GST, 
    MAX(CASE WHEN (tax2 = 'PST') THEN tax2value ELSE NULL END) AS PST, 
    MAX(CASE WHEN (tax3 = 'GRT') THEN tax3value ELSE NULL END) AS GRT 
FROM 
    invoice 
GROUP BY invoiceid 
ORDER BY invoiceid 
+0

GST,PST,GRT或動態值然後我該如何使用它..? – Gurunathan

+0

您必須先了解這些值。解釋答案的鏈接問題,如果可能值的數量未知,則需要在循環中動態構建SQL語句。這是你的問題嗎? – carexcer