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

मैं तालिका से नल मूल्यवान रिकॉर्ड कैसे प्राप्त कर सकता हूं?

select Staff_ID, First_Name, Last_Name
from YourTable
order by cast(Staff_ID as varchar(10))+First_Name+Last_Name,
         Staff_ID

NULL मूल्यों को पहले आदेश दिया जाएगा।

किसी मान को NULL . के साथ संयोजित करते समय परिणाम NULL . है तो First_Name+Last_Name NULLहोगा अगर कोई NULL है तो ।

cast(Staff_ID as varchar(10))+... जब First_Name+Last_Name . के मामले में आप चाहते हैं कि ऑर्डर की गारंटी हो है नहीं NULL (मुझे लगता है Staff_ID int है )।

और कॉलम द्वारा अतिरिक्त आदेश Staff_ID क्या उन सभी पंक्तियों के लिए आपके इच्छित ऑर्डर की गारंटी देने के लिए है जहां First_Name+Last_Name है NULL

अपडेट करें

आप INFORMATION_SCHEMA.COLUMNS का उपयोग करके गतिशील रूप से क्वेरी बना सकते हैं। यह वही कर सकता है जो आप चाहते हैं। ध्यान दें, यह सभी प्रकार के डेटा प्रकारों के लिए परीक्षण नहीं किया जाता है।

declare @TableName sysname  = 'YourTable'
declare @Sql nvarchar(max) = 'select * from '+quotename(@TableName)+ ' order by '

select @Sql = @Sql+'+cast('+COLUMN_NAME+' as varchar(max))'
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TableName

exec (@Sql)

अपडेट 2

इसके बजाय XML का उपयोग करने वाला एक गैर-गतिशील संस्करण।

;with C as 
( 
  select *,
         row_number() over(order by (select 1)) as rn
  from YourTable
)
select C1.*
from C as C1
  cross apply (select *
               from C as C2
               where C1.rn = C2.rn
               for xml path('x'), type) as T(N)
order by T.N.value('count(/x/*)', 'int')

अपडेट 3

यदि आप अपनी तालिका की प्राथमिक कुंजी जानते हैं और row_number() का उपयोग करने के बजाय जहां क्लॉज का उपयोग कर सकते हैं, उसे टाइप करने में कोई आपत्ति नहीं है ।

select Y1.*
from YourTable as Y1
order by (select *
          from YourTable as Y2
          where Y1.Staff_ID = Y2.Staff_ID
          for xml path('x'), type).value('count(/x/*)', 'int')


  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 ​​​​सर्वर में एक दृश्य में एक कॉलम का संदर्भ देने वाली एक विदेशी कुंजी हो सकती है?

  2. पैरामीटर के रूप में तालिका नाम के साथ संग्रहीत प्रक्रिया

  3. SQL सर्वर टेबल:@, # और ## में क्या अंतर है?

  4. संग्रहीत प्रक्रिया के साथ ODBC कॉल विफल - क्वेरी के माध्यम से पास करें

  5. csv फ़ाइल को sql 2005 या 2008 में आयात करने के लिए bcp का उपयोग करें