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

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 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
» 열을 행으로 변환시 쿼리문 질문입니다. 심슨 2012.06.22 84043
5620 GROUP BY절에 WITH ROLLUP 사용 관련 질문입니다. [1] 박영환_289036 2012.06.22 20423
5619 날짜 구하기.. [1] 팔개 2012.06.21 61927
5618 JOIN시 UPDATE 방법좀 문의드립니다... [3] SQL왕왕초보 2012.06.21 41854
5617 페이징 쿼리 문의 드립니다. [4] 동숙이 2012.06.21 12820
5616 ssnetlib.dll 질문입니다. 카루카루 2012.06.21 44333
5615 인덱스가 배열 범위를 벗어났습니다라는 오류가 무엇인지 궁금합니다 가서리 2012.06.21 74061
5614 진짜 큰일났네.. 도와주세요.. DB Server에 로그인할 방법이 없습니다.. [3] 로션s 2012.06.20 52318
5613 쿼리가 돌아간 시간을 알고싶어요~ [1] 버들도령 2012.06.20 34173
5612 선배님들 연결된서버에 관하여 질문있씁니다 [1] alima 2012.06.20 44095
5611 MSSQL 쿼리 질문드립니다. [1] 어헣어헣 2012.06.20 15917
5610 중복되지 않는 MAX값 가져오기 [2] freelab 2012.06.20 17104
5609 CPU 점유율 문제 [4] 바보떠돌이 2012.06.20 58154
5608 저희 사이트 상태가 이상합니다. [7] 카루카루 2012.06.20 13124
5607 테이블 DateTime 값이 GETDATE()와 같을 경우 트리거... [2] 돌브레인 2012.06.19 80405
5606 select 질문입니다. [4] 재호 2012.06.19 15395
5605 열을 행으로 변환 질문 드립니다. [4] 헤헤 2012.06.19 18598
5604 select 질문 입니다. [2] 재호 2012.06.19 10060
5603 프로시저 파라미터에 대해 궁금한게 있어서 여쭤봅니다.. [1] 키라 2012.06.19 10721
5602 메뉴, 페이지, 권한 그리고 사용자에 설계에 대한 조언을 구합니다. [2] 용세중 2012.06.19 16680





XE Login

테스트 팝업
Close