다음과 같은 데이터가 들어가 있습니다.
create table TableA
(
adate char(10), -- 실적일자
aqty int -- 실적수량
)
create table TableB
(
bdate char(10), -- 불량일자
bqty int -- 불량수량
)
아래와 같이 자동으로 구하고 싶습니다.
| 1주 | 2주 | 3주 | 4주 | 5주 | 6주 | 7주 |
실적수량 |
|
|
|
|
|
|
|
불량수량 |
|
|
|
|
|
|
|
불량률 |
|
|
|
|
|
|
|
여기서 상측 주차는 현재날짜기준으로 이전 6월개월 주차를 모두 뿌려주려고 합니다.
행의 실적수량, 불량수량은 해당 주의 실적합계, 불량합계를 보여주려고 합니다...
이틀통안 삽질하고 있네요....
조언 부탁드립니다.
Comment 1
-
불타는불쥐[김경진]
2019.07.04 09:16
이런식으로 하면 되지 않을까요...
DATAPART 함수 활용해서 하면 될 듯 합니다.
정확한 범위 주차와 비교가 필요한 하시면 2100년까지 날짜 기준 테이블 만들어서 사용하셔도 될듯 합니다.
/**** 테스트 데이터 입력 시작 *****/
CREATE TABLE TableA ( adate DATE,
aqty INT
);
CREATE TABLE TableB ( bdate DATE,
bqty INT
);
SET NOCOUNT ON;
DECLARE @i INT;
DECLARE @date DATE;
SET @i = 0;
SET @date = GETDATE();
WHILE ( @i < 48 )
BEGIN
INSERT INTO TableA
VALUES ( @date, FLOOR(RAND() * ( 100 - 1 ) + 1) );
INSERT INTO TableB
VALUES ( @date, FLOOR(RAND() * ( 10 - 1 ) + 1) );
SET @i = @i + 1;
SET @date = DATEADD(DAY, -7, @date);
END;
/**** 테스트 데이터 입력 끝 *****/
SELECT 주차 = ROW_NUMBER() OVER ( ORDER BY aweek DESC ) ,
실적 = aqty ,
불량 = bqty , [%#] = CONVERT(NUMERIC(5,