이거 여기다 질문해도 되는지 모르겠네요...
DB프로그래밍중인데 SQL문으로 데이타를 출력해야 되는 문제인데 도무지 몰라서 질문올립니다.
DATA가 이렇게 나와 있어요.
컬럼명 [Ship_no] [Block_no] [Structure] [Module] [unit] [Weight]
데이타 H1011 1000/104 d99g-104abcd a19bd 3 0.23892992322
이런 식으로 나와 있구요...
이것들 중에서 실제 화면에 나오는 부분은...
[Ship_no] [Block_no] [Structure] [Module] [Total]
1011 104 abcd 그대로 [unit*Weight]의값.단 소수첫째자리까지만
이렇게 select해야 되거든요.
Ship_no같은거야 substr()함수써서 쓴다쳐도 Structure같은 것은 어떻게 짜줘야 하나요?
Structure경우는 Blok_no에서 추출한 데이타(위화면에서 104) 뒷부분(즉 abcd)을 출력해야 하는데요.
이건 substr()쓸수 없는게 어떤 데이타는 짧은 것도 있거든요... ex) Structure가 "104bcdf"인 경우도 있음
이경우를 만족할 수 있는 SQL문 형식은 어케 써야할까요? 며칠동안 생각해봐도 도무지 모르겠어요. 책에도 본적이 없어서요...
부탁드리겠습니다.
CREATE TABLE #A
([Ship_no] varchar(10),
[Block_no] varchar(10),
[Structure] varchar(20),
[Module] varchar(10),
[unit] int,
[Weight] float)
GO
INSERT INTO #A VALUES('H1011', '1000/104', 'd99g-104abcd', 'a19bd', 3, 0.23892992322)
GO
SELECT SUBSTRING(ship_no, 2, LEN(ship_no)) AS Ship_no,
SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no)) AS Block_no,
SUBSTRING(Structure,
CHARINDEX(SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no)), Structure) +
LEN(SUBSTRING(Block_no, CHARINDEX('/', Block_no) + 1, LEN(Block_no))),
LEN(Structure)) AS Structure,
Module, CONVERT(DECIMAL(15, 2), unit * Weight) AS total
FROM #A
쿼리분석기에서 굴림체로 하셔서 복사하시면 들여쓰기가 그나마 되어있을겁니다.