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

टीएसक्यूएल अलग मायने रखता है

जैसा कि नीचे दिखाया गया है, आपको अस्थायी तालिका या तालिका चर का उपयोग करने की आवश्यकता हो सकती है

     DECLARE @t TABLE (
    ID INT
    ,SuppressionTypeID INT
    ,PersonID INT
    )

INSERT INTO @t
SELECT 1
    ,1
    ,123

UNION ALL

SELECT 2
    ,1
    ,456

UNION ALL

SELECT 3
    ,2
    ,456

DECLARE @t1 TABLE (
    ID INT
    ,SuppressionTypeID INT
    ,PersonID INT
    ,firstid INT
    )

INSERT INTO @t1
SELECT *
    ,NULL
FROM @t

UPDATE t1
SET t1.firstid = t2.firstid
FROM @t1 AS t1
INNER JOIN (
    SELECT personid
        ,min(SuppressionTypeID) AS firstid
    FROM @t1
    GROUP BY personid
    ) AS t2 ON t1.PersonID = t2.PersonID

SELECT coalesce(t2.firstid, t1.SuppressionTypeID) AS SuppressionTypeID
    ,count(DISTINCT t2.personid) AS count
FROM @t1 AS t1
LEFT JOIN @t1 AS t2 ON t1.personid = t2.personid
    AND t1.SuppressionTypeID = t2.firstid
GROUP BY coalesce(t2.firstid, t1.SuppressionTypeID)

परिणाम है

SuppressionTypeID count
----------------- -----------
1                 2
2                 0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TempResults AS का उपयोग करते समय दो परिणाम सेट लौटाएं

  2. संग्रहीत प्रक्रिया SQL सर्वर में पैरामीटर के रूप में NULL को कैसे प्रतिबंधित करें?

  3. कुल फ़ंक्शन के बिना एसक्यूएल सर्वर में पिवट क्वेरी कैसे बनाएं?

  4. SQL सर्वर ट्रिगर - लेन-देन के आधार पर समूहीकरण

  5. Sqlcmd को सर्वर से कैसे कनेक्ट करें?