इसका समाधान बिट डेटा प्रकार को डेटा प्रकार में डालना है जो कुल कार्यों में स्वीकार किया जाता है। उदाहरण के लिए,
SELECT MAX(CAST(BitColumn AS TINYINT))
बिटकॉलम मान को एक छोटे से डेटाटाइप पर रखता है। कथन 1 लौटाता है यदि बिटकॉलम में कम से कम 1 मान होता है; अन्यथा, यह 0 देता है (जब तक कि सभी मान शून्य न हों)।
मान लिया जाये कि निम्नलिखित:
CREATE TABLE MyTable (ID INT, Name VARCHAR(10), BitColumn BIT);
INSERT INTO MyTable VALUES (1, 'Name 1', 1);
INSERT INTO MyTable VALUES (1, 'Name 2', 0);
INSERT INTO MyTable VALUES (1, 'Name 3', 1);
INSERT INTO MyTable VALUES (2, 'Name 1', 1);
INSERT INTO MyTable VALUES (2, 'Name 2', 1);
INSERT INTO MyTable VALUES (2, 'Name 3', 1);
INSERT INTO MyTable VALUES (3, 'Name 1', 0);
INSERT INTO MyTable VALUES (3, 'Name 2', 0);
INSERT INTO MyTable VALUES (3, 'Name 3', 0);
आप निम्न क्वेरी
SELECT ID,
CAST(MAX(CASE Name WHEN 'Name 1' THEN CAST(BitColumn AS TINYINT) ELSE NULL END) AS BIT) AS [Name 1],
CAST(MAX(CASE Name WHEN 'Name 2' THEN CAST(BitColumn AS TINYINT) ELSE NULL END) AS BIT) AS [Name 2],
CAST(MAX(CASE Name WHEN 'Name 3' THEN CAST(BitColumn AS TINYINT) ELSE NULL END) AS BIT) AS [Name 3]
FROM MyTable
GROUP BY ID
ORDER BY ID
इस मामले में उपयोग करते हुए इस डेटा पिवट कर सकते हैं, अधिकतम BitColumn मूल्य बिट करने के लिए tinyint से वापस बदल जाती है। यह आवश्यक नहीं है।
परिणाम
ID Name 1 Name 2 Name 3
--------------------------
1 1 0 1
2 1 1 1
3 0 0 0
एक वैकल्पिक क्वेरी, SQL सर्वर 2005 के लिए कर रहे हैं और बाद में, धुरी ऑपरेटर का उपयोग करता
SELECT ID, [Name 1], [Name 2], [Name 3]
FROM
(
SELECT ID, Name, CAST(BitColumn AS TINYINT) AS BitColumn
FROM MyTable
) as SourceTable
PIVOT
(
MAX(BitColumn) FOR Name in ([Name 1], [Name 2], [Name 3])
) AS PivotTable
मुझे लगता है कि हम अंक बना सकते हैं या दूसरों की मदद करने के लिए यहाँ कर रहे हैं? आप उन बिंदुओं को क्या बदल सकते हैं? – JonH