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

T-SQL का उपयोग करके SQL सर्वर में एक कंप्यूटेड कॉलम बनाएं

यह आलेख दर्शाता है कि SQL सर्वर में परिकलित स्तंभ बनाने के लिए T-SQL का उपयोग कैसे करें।

एक गणना कॉलम एक वर्चुअल कॉलम है जो इसके मूल्य की गणना करने के लिए एक अभिव्यक्ति का उपयोग करता है। व्यंजक आम तौर पर अन्य स्तंभों के डेटा का उपयोग करेगा। एक परिकलित स्तंभ तालिका में भौतिक रूप से तब तक संग्रहीत नहीं होता जब तक कि उस पर PERSISTED चिह्नित न हो ।

उदाहरण 1 - कंप्यूटेड कॉलम के साथ एक टेबल बनाएं

यहां परिकलित स्तंभ के साथ तालिका बनाने, डेटा सम्मिलित करने, फिर तालिका की सामग्री का चयन करने का एक उदाहरण दिया गया है।

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money,
    TotalValue AS Quantity * Price
  );

INSERT INTO Products (ProductName, Quantity, Price)
VALUES 
  ('Hammer', 5, 10),
  ('Corkscrew', 2, 7.50),
  ('Kettle', 3, 25.15);

SELECT *
FROM Products;

परिणाम:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 5          | 10.0000 | 50.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+

इस मामले में, अंतिम कॉलम एक परिकलित कॉलम है। यह मात्रा कॉलम को मूल्य कॉलम से गुणा करता है। यह हमें वर्तमान में स्टॉक में उत्पाद का कुल मूल्य प्राप्त करने में सक्षम बनाता है।

उदाहरण 2 - एक स्थायी गणना कॉलम बनाएं

आप PERSISTED . जोड़कर एक स्थायी परिकलित स्तंभ बना सकते हैं बहस। इसके परिणामस्वरूप गणना मूल्य तालिका में भौतिक रूप से संग्रहीत किया जाएगा। यदि इसे जारी नहीं रखा जाता है, तो हर बार जब आप परिकलित कॉलम पढ़ते हैं तो मान की गणना की जाती है।

यहां पिछले वाले के समान कोड उदाहरण दिया गया है, इस समय को छोड़कर मैं एक स्थायी गणना कॉलम बनाता हूं:

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money,
    TotalValue AS Quantity * Price PERSISTED
  );

केवल अंतर PERSISTED . है तर्क।

उदाहरण 3 - एक मान अपडेट करें

अब अगर कोई मान Quantity . में अपडेट किया जाता है या Price कॉलम, यह गणना किए गए कॉलम द्वारा लौटाए गए कुल मूल्य को प्रभावित करेगा। यह तब होगा जब कॉलम बना रहे या नहीं।

उदाहरण के लिए, यदि कोई हैमर खरीदता है, तो यह गणना किए गए कॉलम द्वारा लौटाए गए कुल मूल्य को प्रभावित करेगा:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

परिणाम:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 4          | 10.0000 | 40.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SP_WhoIsActive या FogLight के माध्यम से SQL डेटाबेस की निगरानी करें | SQL सर्वर प्रदर्शन समस्या निवारण -1

  2. क्या NHibernate में टेबल-वैल्यूड पैरामीटर्स को पास करने के लिए `SqlDbType.Structured` का उपयोग करना संभव है?

  3. SQL सर्वर प्रबंधन स्टूडियो में SQL को प्रारूपित करें

  4. SQL सर्वर (T-SQL) में महीने की संख्या को महीने के नाम में बदलें

  5. क्या मुझे इनलाइन वर्कर (अधिकतम) कॉलम का उपयोग करना चाहिए या इसे एक अलग टेबल में स्टोर करना चाहिए?