수량별 집계를 나타낼수있는 함수가있나요?? 0 4 1,380

by 지메이비 [SQL Query] MSSQL [2022.07.22 09:37:11]



사진이 프로시저결과인데요 이프로시저에 컬럼을 하나 추가해서 집계를 내고싶습니다.

품목(materialname)별로 집계를 내고싶은데 집계 내는 방식이 조금 다르더라구요

냉동고구마를 보시면 수량(qty)가 1.00이 2개 4.00이 2개,  2.00과 3.00은 1개씩 있습니다.

이러면 1.00 이 2개니까 1-2로 표현을 하고 4.00은 4-2 2.00과 3.00은 각각 2-1 , 3-1 로 표현하고싶고 중복되는 결과는 빈값으로 채우고싶습니다.

할수있는방법이 있을까요 ?? 

 

by 마농 [2022.07.22 10:28:13]

원하는 결과를 표로 보여주세요.


by 지메이비 [2022.07.22 11:11:05]
  storeCode carNo storeName remark materialCode materialName dimension unitName qty total
1 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 1.00 1-2
2 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 3.00 3-1
3 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 4.00 4-2
4 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 2.00 2-1
5 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 1.00  
6 2026 5 [공주]공암어린이집   1000840  냉동고구마(농우)중국산/맛탕용 1KG(55개-60개)유탕 ea 4.00  
                     

이런식으로 품목별로 집계를 하고 같은집계가 나오면 안보이게 하고싶습니다


by 마농 [2022.07.22 13:16:49]
WITH t (storeCode, carNo, storeName, remark, materialCode, materialName, dimension, unitName, qty) AS
(
          SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 1.00
UNION ALL SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 3.00
UNION ALL SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 4.00
UNION ALL SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 2.00
UNION ALL SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 1.00
UNION ALL SELECT '2026', 5, '[공주]공암어린이집', '', '1000840 ', '냉동고구마(농우)중국산/맛탕용', '1KG(55개-60개)유탕', 'ea', 4.00
)
SELECT storeCode
     , carNo
     , storeName
     , remark
     , materialCode
     , materialName
     , dimension
     , unitName
     , qty
     , CASE WHEN ROW_NUMBER() OVER(PARTITION BY materialCode, qty ORDER BY (SELECT 1)) = 1
            THEN CONCAT(CAST(qty AS INT), '-', COUNT(*) OVER(PARTITION BY materialCode, qty))
        END total
  FROM t
;

 


by 지메이비 [2022.07.22 13:36:05]

해결했습니다 감사합니다

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입