2013-10-24 70 views
0

我有一個表NewDemo顯示sql錶行作爲列

ID Name  Condition Value 
-- ----  --------- ----- 
1 Book  Amount  90/- 
2 Pencil Amount  5/- 
3 Eraser Amount  7/- 
1 Book  Quantity 900 
2 Pencil Quantity 280 
3 Eraser Quantity 200 

但我想顯示像下面

ID Name  Amount  Quantity 
-- ----  ------  -------- 
1  Book  90/-  900 
2  Pencil 5/-  280 
3  Eraser 7/-  200 

給我一些解決方案.../ 謝謝大家

回答

0

你可以做這樣的事情。

SELECT A.ID, A.Name, A.Value AS 'Amount', B.Value AS 'Quantity' 
FROM (SELECT * FROM NewDemo WHERE Condition = 'Amount') AS A 
    JOIN (SELECT * FROM NewDemo WHERE Condition = 'Quantity') AS B 
    ON A.ID = B.ID 
0
SELECT a.ID, a.Name, a.Value as Amount, b.Value as Quantity FROM 
(SELECT ID, Name, Value FROM NewDemo WHERE Condition = 'Amount') a 
LEFT JOIN (SELECT ID, Name, Value FROM NewDemo WHERE Condition = 'Quantity') b 
on a.ID = b.ID 
2

在SQL服務器::試試這個

select * from [dbo].[2] 
pivot 
(
max(value) 
for condition in([amount],[quantity]) 
)as piv order by id 
+0

這個完美的作品! –

0

您好我認爲這將有助於你

SELECT  ID, Name, MAX(DISTINCT CASE WHEN Condition = 'Amount' THEN Value END) AS Amount, MAX(DISTINCT CASE WHEN Condition = 'Quantity' THEN Value END) 
      AS Quantity 
FROM  dbo.TESTTABLE 
GROUP BY ID, Name