데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

아래와 같은 쿼리문이 있습니다.

1일부터 31일까지 생산실적을 열이 아닌 행으로 조회하기 위해 case 구문을 사용하였습니다.

그러나 메모리 용량에 문제가 있어 테이블 변수를 선언해서 구문을 변경할려고 합니다.

pivot 테이블을 사용할려고 했지만 ms-sql 2005 호환성 문제로 인하여 ( 80 -> 90 변경시 다른 쿼리문을 사용못함 ) 제대로 되지 않네요.

무슨 좋은 방법 없을까요?

 

제가 원하는결과는 

품목코드 | 품목명 .....................| 합계 |     1일        |        2일     | 3일 | 4일 | 5일 | 6일 | 7일 | 8일 | 9일 | ...............................................|      31일   |

                                                                  | 생산수량 | 생산수량 |................................................................................................................|생산수량|

 

이것입니다.

 

ALTER PROCEDURE USP_P4428MA1_KO429 ( @PLANT_CD NVARCHAR(10), @YYYYMM NVARCHAR(07),
                                     @ITEM_CD NVARCHAR(10), @ITEM_GROUP NVARCHAR(10),
                                     @ITEM_ACCT_CD NVARCHAR(10) )
AS
SET @YYYYMM = REPLACE(@YYYYMM,'-','') 

SELECT  f.item_cd, f.item_nm, f.spec, f.basic_unit, j.minor_nm 'item_acct_nm', f.item_group_cd, i.item_group_nm,
        SUM(c.prod_qty_in_base_unit) Total,
        SUM(CASE WHEN day(c.report_dt) = 1 THEN c.prod_qty_in_base_unit ELSE 0 END ) '01',
        SUM(CASE WHEN day(c.report_dt) = 2 THEN c.prod_qty_in_base_unit ELSE 0 END ) '02',
        SUM(CASE WHEN day(c.report_dt) = 3 THEN c.prod_qty_in_base_unit ELSE 0 END ) '03',
        SUM(CASE WHEN day(c.report_dt) = 4 THEN c.prod_qty_in_base_unit ELSE 0 END ) '04',
        SUM(CASE WHEN day(c.report_dt) = 5 THEN c.prod_qty_in_base_unit ELSE 0 END ) '05',
        SUM(CASE WHEN day(c.report_dt) = 6 THEN c.prod_qty_in_base_unit ELSE 0 END ) '06',
        SUM(CASE WHEN day(c.report_dt) = 7 THEN c.prod_qty_in_base_unit ELSE 0 END ) '07',
        SUM(CASE WHEN day(c.report_dt) = 8 THEN c.prod_qty_in_base_unit ELSE 0 END ) '08',
        SUM(CASE WHEN day(c.report_dt) = 9 THEN c.prod_qty_in_base_unit ELSE 0 END ) '09',
        SUM(CASE WHEN day(c.report_dt) = 10 THEN c.prod_qty_in_base_unit ELSE 0 END ) '10',
        SUM(CASE WHEN day(c.report_dt) = 11 THEN c.prod_qty_in_base_unit ELSE 0 END ) '11',
        SUM(CASE WHEN day(c.report_dt) = 12 THEN c.prod_qty_in_base_unit ELSE 0 END ) '12',
        SUM(CASE WHEN day(c.report_dt) = 13 THEN c.prod_qty_in_base_unit ELSE 0 END ) '13',
        SUM(CASE WHEN day(c.report_dt) = 14 THEN c.prod_qty_in_base_unit ELSE 0 END ) '14',
        SUM(CASE WHEN day(c.report_dt) = 15 THEN c.prod_qty_in_base_unit ELSE 0 END ) '15',
        SUM(CASE WHEN day(c.report_dt) = 16 THEN c.prod_qty_in_base_unit ELSE 0 END ) '16',
        SUM(CASE WHEN day(c.report_dt) = 17 THEN c.prod_qty_in_base_unit ELSE 0 END ) '17',
        SUM(CASE WHEN day(c.report_dt) = 18 THEN c.prod_qty_in_base_unit ELSE 0 END ) '18',
        SUM(CASE WHEN day(c.report_dt) = 19 THEN c.prod_qty_in_base_unit ELSE 0 END ) '19',
        SUM(CASE WHEN day(c.report_dt) = 20 THEN c.prod_qty_in_base_unit ELSE 0 END ) '20',
        SUM(CASE WHEN day(c.report_dt) = 21 THEN c.prod_qty_in_base_unit ELSE 0 END ) '21',
        SUM(CASE WHEN day(c.report_dt) = 22 THEN c.prod_qty_in_base_unit ELSE 0 END ) '22',
        SUM(CASE WHEN day(c.report_dt) = 23 THEN c.prod_qty_in_base_unit ELSE 0 END ) '23',
        SUM(CASE WHEN day(c.report_dt) = 24 THEN c.prod_qty_in_base_unit ELSE 0 END ) '24',
        SUM(CASE WHEN day(c.report_dt) = 25 THEN c.prod_qty_in_base_unit ELSE 0 END ) '25',
        SUM(CASE WHEN day(c.report_dt) = 26 THEN c.prod_qty_in_base_unit ELSE 0 END ) '26',
        SUM(CASE WHEN day(c.report_dt) = 27 THEN c.prod_qty_in_base_unit ELSE 0 END ) '27',
        SUM(CASE WHEN day(c.report_dt) = 28 THEN c.prod_qty_in_base_unit ELSE 0 END ) '28',
        SUM(CASE WHEN day(c.report_dt) = 29 THEN c.prod_qty_in_base_unit ELSE 0 END ) '29',
        SUM(CASE WHEN day(c.report_dt) = 30 THEN c.prod_qty_in_base_unit ELSE 0 END ) '30',
        SUM(CASE WHEN day(c.report_dt) = 31 THEN c.prod_qty_in_base_unit ELSE 0 END ) '31'           
from p_production_order_header a with (nolock)    
         inner join p_production_order_detail b with (nolock) on a.prodt_order_no = b.prodt_order_no        
         inner join p_production_results c with (nolock) on b.opr_no = c.opr_no
                                                                                           and a.prodt_order_no = c.prodt_order_no 
                                                                                           and c.plant_cd LIKE @PLANT_CD  
                                                                                           and CONVERT(VARCHAR(06), c.report_dt, 112) = @YYYYMM   
         inner join b_item f with (nolock) on a.item_cd = f.item_cd
                                                                  and f.item_cd like @ITEM_CD
                                                                  and f.item_group_cd like @ITEM_GROUP
         left outer join b_item_group i with (nolock) on f.item_group_cd = i.item_group_cd
         inner join ( select minor_cd, minor_nm  from b_minor where MAJOR_CD = 'P1001') j on f.item_acct = j.minor_cd
                                                                                                                                                            and f.item_acct like @ITEM_ACCT_CD
GROUP BY f.item_cd, f.item_nm, f.spec, j.minor_nm, f.item_group_cd, i.item_group_nm, f.basic_unit

No. Subject Author Date Views
10730 쿼리 질문드립니다. [4] 댈이 2010.08.03 122678
10729 주민등록번호로 연령 추출 질문이요 [1] 수가리 2009.11.27 114495
10728 쿼리를 어떻게 해야하는지 시간되시면 부탁드립니다. ^^;; [3] 아톰 2011.09.08 97646
10727 nchar형을 datetime형으로 변경 하려면 어떻게 해야 하나요?(초보) [2] mpis 2011.10.19 92228
10726 1억건 데이터 select 속도 높이고 싶은데.... [4] 무한탐구 2011.09.15 91056
10725 DB를 복구했더니 대기/읽기전용 이라고 나옵니다 [3] 빨강구슬 2012.02.23 91019
10724 DateTime 계산 방법 궁금 합니다. [1] 백마탄나 2010.09.30 90910
10723 백업과 복원 시 용량 문제 질문 [4] 이성민_300626 2012.08.06 89939
10722 sp_rename 컬럼 [2] afddsa 2011.07.21 88477
10721 윈도우즈 계정중에 SUPPORT_388945a0 계정은 삭제해도 되나요? [3] 이노(inno) 2012.04.17 87716
10720 생년월일을 받아서 날짜형식으로 변환하는 법이요 ^^ [2] 군고구마 2012.08.07 87179
10719 Selet 시 행 열 바꿔서 출력하는 쿼리가 있는지요?? [3] 현무뉘 2012.04.19 86496
10718 select문 안에서 if문을 어떻게 사용하나요? [2] 4월의눈 2011.08.27 84050
» 열을 행으로 변환시 쿼리문 질문입니다. 심슨 2012.06.22 84049
10716 sql 엔진의 실행 순서에 대한 질문입니다. [1] 용세중 2011.10.20 83840
10715 2008에서 2000으로 Linked server 는연결되는데 조회가 안되요. [3] 황후 2012.02.25 83538
10714 트랜잭션로그 삭제시 안비워지는 현상?? [2] 이노(inno) 2011.08.19 81351
10713 테이블 DateTime 값이 GETDATE()와 같을 경우 트리거... [2] 돌브레인 2012.06.19 80407
10712 대량 데이터 삭제시 인덱스관련 질문입니다 [3] 개발좋아 2013.03.25 79623
10711 INSERT와 DELETE의 처리시간 및 트랜잭션 로그 사이즈 질문 [1] 이노(inno) 2013.06.11 78196





XE Login