2017-04-20 93 views
1

我在SQL Server 2008中有這個表T,我需要創建一個視圖,將每行的結果轉換爲多行。以下是目標視圖的示例。查看計數列,並將值從單行轉換爲多行

請幫

當前表T

EmpID EmpName State City 
--------------------------------- 
1234 aaaa  NY  NY 
6789 bbbb  FL  Orlando 

目標視圖:

EmpID ColumnName  ColumnValue 
----------------------------------- 
1234 EmpName   aaaa 
1234 State   NY 
1234 City   NY 
6789 EmpName   bbbb 
6789 State   FL 
6789 City   Orlando 

回答

0
CREATE VIEW yourView AS 
SELECT EmpID, 'EmpName' AS ColumnName, EmpName AS ColumnValue 
FROM T 
UNION ALL 
SELECT EmpID, 'State', State 
FROM T 
UNION ALL 
SELECT EmpID, 'City', City 
FROM T 

然後提供訂貨時,你實際上是從該視圖中選擇:

SELECT t.EmpID, t.ColumnName, t.ColumnValue 
FROM yourView t 
ORDER BY t.EmpID, 
     CASE WHEN t.ColumnName = 'EmpName' THEN 1 
       WHEN t.ColumnName = 'State' THEN 2 
       WHEN t.ColumnName = 'City' THEN 3 END 
+0

我得到錯誤「ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效,除非TOP或FOR XML也被指定」 – AHS

+0

@AHS我更新了我的答案。通常一個視圖不能使用'ORDER BY'。相反,在您實際選擇時提供您想要的順序。 –

+0

它的工作,謝謝。 – AHS