mssql 어떻게 해야될지 질문좀 드립니다. 0 12 625

by 리리리1 [SQL Query] [2021.10.06 13:54:23]


변수에 따라서 (변수는 10이하입니다)

값이있으면 균등한 값으로 나누어 주고 마지막 행에 나머지 값을 보정해 주고 싶습니다.

ex)값이10이고  변수가 3 이라면 3 ,3 ,4      3개행으로 분할

mssql을 해야 급히 할 일이 생겨서 염치없지만 문의좀 드리겠습니다 ㅠㅠ

 

 

by 마농 [2021.10.06 14:15:47]

3 이 의미하는게 뭔가요?
- 나누어진 값 3 을 의미하는 건가요?
- 나누어진 행 3 을 의미하는 건가요?
4 이면 결과가 어떻게 나와야 하나요?


by 리리리1 [2021.10.06 14:25:07]

아 제가 봐도 헷갈리네요 죄송합니다.

변수는 분할이라고 생각하시면 될거같아요 . 변수3은 3분할 4면4분할

말씀하신 4라면   2.5 2.5 2.5 2.5 이런식으로 나와야 하는거죠

3이라면 3,3,3 에 나머지 값을 1을 마지막에 넣어주는거요


by 마농 [2021.10.06 14:27:43]

또 헷갈리는데요.
왜 4 일때는 소수점이 나오고?
왜 3 일때는 소수점이 안나오나요?


by 리리리1 [2021.10.06 14:30:30]

아 예를 들은 거에요 테이블에 저장된 고정값이  10이라는 전제하에 


by 마농 [2021.10.06 14:33:45]

규칙은 동일하게 적용되어야 합니다.
예시는 정확하게 들어 주셔야 합니다.


by 리리리1 [2021.10.06 14:45:06]

변수에 따른 균등분할이고  마지막 row에 나머지를 포함한 값으로 보정하는 거라고 생각하시면 될 거 같습니다.


by 마농 [2021.10.06 14:50:17]

"변수에 따른 균등분할이고  마지막 row에 나머지를 포함한 값으로 보정하는 거"라고 생각합니다.
다만. 케이스별 결과물 예시자료가 기준이 왔다갔다 하고 있습니다.
3 일 때는 정수 처리하고 4 일 때는 소수점 처리 하고 기준이 다릅니다.
어떤 값이 오든 똑같은 기준으로 처리되어야 할 것입니다.
기준이 명확하게 정해져야 답을 드릴 수 있습니다.


by 리리리1 [2021.10.06 14:57:52]

앞에서 부터 보니  제가 질문 및 답변을 잘못한거 같긴 하네요 죄송합니다.

정수로 균등분할을 하고 마지막 row에만 보정을 하면 됩니다. 


by 마농 [2021.10.06 15:00:33]

그럼 10을 4개 행으로 나누면 ( 2, 2, 2, 4 ) 가 되면 되겠군요.


by 리리리1 [2021.10.06 15:01:02]

네 맞습니다


by 마농 [2021.10.06 15:02:33]
WITH t AS
(
SELECT tot
     , cnt
     , 1 num
     , tot / cnt val
  FROM (SELECT 10 tot, 4 cnt) a
 UNION ALL
SELECT tot
     , cnt
     , num + 1 num
     , CASE num + 1 WHEN cnt THEN tot - val * num ELSE val END val
  FROM t
 WHERE num < cnt
)
SELECT * FROM t
;

 


by 리리리1 [2021.10.06 15:03:35]

정말 감사합니다 참고 해보도록 하겠습니다.!!

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