[英]Having trouble converting SQL query to XML ouput for SQL Server 2000
[英]SQL 2000 query trouble
考慮下表
create table sample(id, name, numeric, qno, ans1,ans2,ans3)
sample data
1, 'vivek', 1, 'a', 'b', ''
2, 'vivek', 1, 'c', 'd', ''
3, 'vivek', 2, 'e', 'f', 'g'
4, 'vivek', 3, 'h', 'i', 'j'
5, 'vijay', 1, 'k', '', 'l'
6, 'vijay', 2, 'm', '', 'n'
7, 'vijay', 2, 'o', '', 'p'
8, 'vikram', 3, 'q', 'r', 's'
output expected
column Names: name, info1, info2, info3
values
'vivek','ab','ef','hij'
'vivek','cd','',''
'vijay','kl', 'mn',''
'vijay','','op',''
'vikram','','','qrs'
將行轉換為列。
換一種說法。 一個答案將有一行。 一個問題可以有多個答案。
輸出應該將答案號作為列。
在sql 2000中有什么快速簡便的技術嗎?
首先,如果我理解你的問題,那么我認為你的第一個結果應該是'vivek','ab','efg','hij'而不是'vivek','ab','ef','hij'
如果是這樣,那么我認為以下可能會做您想要的。
IF OBJECT_ID('TempDB..#TempSample') IS NOT NULL
DROP TABLE #TempSample
DECLARE @PrevName nvarchar(80),
@PrevRow_number INT,
@PrevQno int
select
isNull(id, 0) as id ,
isNull(sname, '') as sName ,
IsNull(qno,0) as qno ,
ans1,
ans2,
ans3 ,
CAST(0 AS INT) AS row_number ,
Cast('' as Nvarchar(80)) as newAns1,
Cast('' as Nvarchar(80)) as newAns2,
Cast('' as Nvarchar(80)) as newAns3
INTO #TempSample
from
(select id, sname, qno, ans1, ans2, ans3 from sample ) t3
ALTER TABLE #TempSample ADD PRIMARY KEY CLUSTERED (sName, qno , id)
UPDATE #TempSample
SET @PrevRow_number = row_number = CASE WHEN sName = @PrevName and qno = @PrevQno THEN @PrevRow_number +1 ELSE 1 END,
@PrevName = sname ,
@PrevQno = qno,
newAns1 = case when sName = @PrevName and qno=1 Then newAns1 + ans1+ans2+ans3 else newAns1 end ,
newAns2 = case when sName = @PrevName and qno=2 Then newAns2 + ans1+ans2+ans3 else newAns2 end ,
newAns3 = case when sName = @PrevName and qno=3 Then newAns3 + ans1+ans2+ans3 else newAns3 end
FROM #TempSample WITH(TABLOCKX)
OPTION (MAXDOP 1)
Select sName, Max(newAns1) as Ans1 , Max(newAns2) as Ans2, Max(newAns3) as Ans3
From #TempSample
Group by sName, Row_Number
Order By sName
最近有一個與Sql 2000類似的問題,所以信用必須轉到SqlServerCentral上的這篇文章
不,沒有簡單的方法在sql 2000中創建一個數據透視表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.