2014-01-06 16 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