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

टी-एसक्यूएल क्वेरी फ्री पोजीशन के लिए एक मैट्रिक्स टेबल

SQL fiddle

 CREATE TABLE Coordinate
(  X int, Y int,Z int, Disabled bit, OccupiedId int)

INSERT INTO Coordinate VALUES (1,1,1, 1, NULL)
INSERT INTO Coordinate VALUES (1,1,2, 0, NULL)
INSERT INTO Coordinate VALUES (1,1,3, 0, NULL)
INSERT INTO Coordinate VALUES (1,1,4, 0, NULL)
INSERT INTO Coordinate VALUES (1,2,1, 0, NULL)
INSERT INTO Coordinate VALUES (1,2,2, 0, NULL)
INSERT INTO Coordinate VALUES (1,2,3, 0, 123)
INSERT INTO Coordinate VALUES (1,2,4, 0, NULL)
INSERT INTO Coordinate VALUES (1,2,5, 1, NULL)

SELECT X, Z, MIN(Y) AS FirstFreePosition
FROM Coordinate
WHERE Disabled = 0 AND OccupiedId IS NULL
GROUP BY X, Z

OR -- if you need the unavailable combinations too, then something like this:

SELECT X, Z, MIN(CASE 
                 WHEN Disabled = 1 OR OccupiedId IS NOT NULL 
                 THEN 1000 --a big number
                 ELSE Y END) AS FirstFreePosition
FROM Coordinate
GROUP BY X, Z


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Microsoft SQL Server 2012 क्वेरी प्रबंधन स्टूडियो में JDBC 4.0 से अधिक लेकिन सेकंड (सेकंड) क्यों लेती है?

  2. ISNUMERIC('.') 1 क्यों लौटाता है?

  3. उदाहरण के साथ OPENJSON का परिचय (SQL सर्वर)

  4. SQL सर्वर में, ऐसा क्यों है कि NULL खाली स्ट्रिंग के बराबर नहीं है और खाली स्ट्रिंग के बराबर नहीं है?

  5. SQL सर्वर में किसी पहचान कॉलम पर वर्तमान पहचान मान वापस करने के लिए IDENT_CURRENT() का उपयोग करें