결과를 어떻게 사용할지 알지 못하면 더 간단하고 유사한 쿼리를 사용할 수 있는지 고려해 볼 가치가 있습니다. 예를 들어 :
SELECT name, availability, COUNT(*) As CountOfAvailability
GROUP BY name, availability
을 생성합니다 이것은 당신에게 당신의 구현에서와 마찬가지로 사용할 수 있습니다 가까운 결과의 좋은 세트를 제공
name availability CountOfAvailability
---------------------------------------------------
brush available 2
paint available 1
paint not available 1
(?). 온 따라
SELECT DISTINCT
names.name,
available_results.CountOfAvailability As "available",
not_available_results.CountOfAvailability As "not available"
FROM
vw_Base
LEFT JOIN (SELECT CountOfAvailability FROM vw_Base WHERE availability = 'available') As available_results ON vw_Base.name = available_results.name
LEFT JOIN (SELECT CountOfAvailability FROM vw_Base WHERE availability = 'not available') As not_available_results ON vw_Base.name = not_available_results.name
그리고 :
그렇지 않으면, 당신은 또한 다음과 같이 (: 완전히 테스트되지 않은 메모를) 뭔가를 (. vw_Base를 호출 예) 기본보기로 설정 해당 쿼리/결과를 사용할 수 있습니다 사용중인 데이터베이스 시스템에서 함수를 사용하여 반환 된 모든 null 결과를 0으로 변환하십시오 (예 : SQL Server의 ISNULL()).
예를 들어 ENUM ('0', '1') '또는 일부'bool '유형의'available/not available '열보다 작은 데이터를 사용하는 것이 좋습니다. – hsz