كيفية الحصول على / عدد كاذبة صحيح من حقل بت في عمودين منفصلين
-
20-09-2019 - |
سؤال
وأحتاج لإنشاء استعلام التي سيتم جمعها من عدد صحيح (1) و False (0) إلى عمودين منفصلين من حقل واحد بت.
وأنا انضمامه 3 الجداول وتحتاج أن يكون شيئا مثل:
وسمة | الطبقة | ممر | فشل
وسوف أكون التجميع على سمة وفئة.
المحلول
وشيء من هذا القبيل:
SUM(CASE WHEN ColumnName = 1 THEN 1 ELSE 0 END) AS Pass,
SUM(CASE WHEN ColumnName = 0 THEN 1 ELSE 0 END) AS Fail
نصائح أخرى
وهذا يعمل (على الأقل في SQL 2008)
SELECT SUM(Passed + 0) PASS , SUM(1 - Passed) FAIL
وأنا مضيفا 0 إلى مرت في مجموع أول وسيلة اليد قصيرة تحويل من بت لكثافة العمليات لأنك لا تستطيع خلاصة القول بت مباشرة.
ومحاولة:
declare @table table (columnName bit)
insert into @table values (1)
insert into @table values (1)
insert into @table values (1)
insert into @table values (1)
insert into @table values (1)
insert into @table values (0)
insert into @table values (0)
insert into @table values (0)
insert into @table values (0)
SELECT
SUM(CASE WHEN ColumnName = 1 THEN 1 ELSE 0 END) AS True1
, SUM(CASE WHEN ColumnName = 0 THEN 1 ELSE 0 END ) AS False0
from @Table
وOUTPUT:
True1 False0
----------- -----------
5 4
(1 row(s) affected)
SELECT
Attribute,
Class,
SUM(CASE BitField WHEN 1 THEN 1 ELSE 0 END) AS [Pass],
SUM(CASE BitField WHEN 0 THEN 1 ELSE 0 END) AS [Fail]
FROM
Table
GROUP BY
Attribute,
Class
وثمة خيار آخر يتمثل
SELECT Attribute, Class
COUNT(CASE WHEN ColumnName = 1 THEN 1 END) Pass,
COUNT(CASE WHEN ColumnName = 0 THEN 1 END) Fail FROM YourTable
GROUP BY Attribute, Class
وهناك حتى خيار واحد أكثر من ذلك:
SELECT
Attribute,
Class,
COUNT(BoolColumnName = 1 or NULL) Pass,
COUNT(BoolColumnName = 0 or NULL) Fail
FROM Table
GROUP BY Attribute, Class
لا تنتمي إلى StackOverflow