Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डीबी डेटा प्रदर्शित करने के लिए SQL क्वेरी

आप डेटा पिवट करना चाहते हैं - स्तंभ डेटा को पंक्तियों में बदलें। पुराने स्कूल का तरीका CASE कथन - SQL सर्वर 2005 के अनुसार आप का उपयोग कर सकते हैं धुरी आज्ञा। PIVOT उदाहरण प्रदान करने के लिए मैं इसे किसी और पर छोड़ दूँगा।

SELECT t.memberid,
       CASE WHEN t.questionno = 1 THEN t.answerno ELSE NULL END AS 1,
       CASE WHEN t.questionno = 2.1 THEN t.answerno ELSE NULL END AS 2.1,
       CASE WHEN t.questionno = 2.2 THEN t.answerno ELSE NULL END AS 2.2,
       CASE WHEN t.questionno = 3 THEN t.answerno ELSE NULL END AS 3
       CASE WHEN t.questionno = 5 THEN t.answerno ELSE NULL END AS 5
       CASE WHEN t.questionno = 7 THEN t.answerno ELSE NULL END AS 7
  FROM ANSWER t

यह मेरे लिए स्पष्ट नहीं है कि प्रश्न कॉलम का डेटा प्रकार क्या है, यदि आवश्यक हो तो उसके अनुरूप अपडेट करें।

यदि उपयोगकर्ता अपने स्वयं के प्रश्नों को परिभाषित कर सकते हैं, तो आपको गतिशील SQL का उपयोग करना होगा . आपको पहले प्रश्नावली की एक सूची प्राप्त करनी होगी, और फिर उन परिणामों के आधार पर CASE कथनों का निर्माण करना होगा। इसी तरह पिवोट के लिए...

DECLARE @SQL nvarchar(4000)
DECLARE @questionno [data type here]

SET @SQL = 'SELECT t.memberid,'

DECLARE c1 CURSOR READ_ONLY FOR
  SELECT t.questionno
    FROM ANSWER t
GROUP BY t.questionno
ORDER BY t.questionno

OPEN c1

FETCH NEXT FROM c1 INTO @questionno 

WHILE @@FETCH_STATUS = 0
BEGIN

  SET @SQL = @SQL + ' CASE WHEN t.questionno = '+ @questionno +' THEN t.answerno ELSE NULL END AS '+ @questionno','

  FETCH NEXT FROM c1 INTO @questionno 
END

CLOSE c1
DEALLOCATE c1

SET @SQL = @SQL + 'NULL FROM ANSWER t '

EXEC(@SQL)

NULL FROM ... ऐसा इसलिए है क्योंकि मैं पिछले CASE कथन से आने वाले अल्पविराम से छुटकारा पाने के लिए बहुत आलसी हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो तिथियों के बीच माध्यिका ढूँढना SQL Server 2008

  2. एसएसआईएस का उपयोग करके एक्सेस डीबी को एसक्यूएल सर्वर डीबी में स्थानांतरित करें

  3. sql सर्वर 2012 में भरोसेमंद =चालू करने के सुरक्षा जोखिम

  4. mssql php फ़ील्ड प्रकार nvarchar (MAX) का चयन नहीं कर सकता

  5. वीबी के माध्यम से एसक्यूएल कॉलम जोड़ने का सबसे आसान तरीका