2012-09-22 3 views
2

웨어 하우스의 아이템을 계산하고웨어 하우스의 여유 공간을 계산 한 다음, Inshelf와 free 컬럼으로 테이블로 출력하고 싶습니다. 그리고 이와 비슷한 것을 제안합니다.SQL count() 값 계산하기

SELECT COUNT(*) as Inshelf, free=10-Inshelf 
    FROM stock.stockproduct 
WHERE StockNum = 1 
    AND checkOutData is NULL; 

분명히 작동하지 않을 것입니다. 이런 종류의 문제에 대한 간단한 해결책이 있습니까?

+0

스키마를 포함하십시오. –

+0

테스트, 테이블 구조 및 RDBMS 작업에 필요한 일부 데이터를 포함 할 수 있습니까? MS SQL Server, MySQL, Oracle. – Yaroslav

+0

나는 – Samuel

답변

3

작동하지 않습니다. 예 : count()과 같은 집계 함수의 결과는 모든 레코드를 고려해야 만 사용할 수 있습니다. 하위 쿼리에서 카운트를 수행하고 하위 쿼리에서 카운트를 수행하면 하위 쿼리가 필요합니다. 귀하의 DB 스키마를 모른 채로 이것은 최선의 추측이지만 ...

SELECT InShelf, free - InShelf 
FROM (
    SELECT count(*) AS Inshelf, free 
    FROM stockproduct 
    WHERE StockNum = 1 AND checkOutData IS NULL 
    GROUP BY somefield 
) AS a 
+0

필드 목록에서 열을 알 수 없음 – Samuel

+0

@ user1660416 : 질문에서 작성한 내용과 Marc이 답변에서 쓴 내용을보고 머리를 사용하여 알아냅니다 'free'가 필드 목록에있는 것이 무엇인가요? 실제로 복사하고 붙여 넣는 것뿐만 아니라 실제로 읽고 읽고 이해하려고 노력해야합니다. 마크, +1. 좋은 대답. –

0

Work !! 바보 = 인에 대한

SELECT InShelf, 10 - InShelf 
FROM (
    SELECT count(*) AS Inshelf, count(*) AS free 
    FROM stock.stockproduct 
    WHERE StockNum = 1 AND checkOutData IS NULL 

) AS a; 

감사합니다 모두, 그리고 SRY는. = '