이 질문에 더 좋은 레이블이 지정되지 않았 음을 사과 드리며 예제없이 설명하는 방법을 모르겠습니다. 여기 내가 성취하려고하는 것이 있습니다.재귀 SQL 열 하위 선택
내 간체 데이터 :
내가 좋아하는 2 열에서 데이터를 반환하는 쿼리를 작성해야ID ParamName ParamValue
-----------------------
1 'Item Code' '100'
1 'Amount' '.99'
2 'Item Code' '555'
2 'Amount' '1.99'
2 'Item Code' '200'
2 'Amount' '2.99'
2 'Item Code' '221'
2 'Amount' '.89'
등 (단일 ID에 대해 여러 값은 해당 항목의 코드를 가정하고 금액은 주문한다는 점에서 일치하는 경우
ItemCode Amount
-----------------------
'100' '.99'
'555' '1.99'
'200' '2.99'
'221 '.89'
이 내가 올 수있는 가장 가까운,하지만 같은 ID로 여러 항목 코드가있는 경우 나) (최대()와 합계로 그룹에 싶지 않은 : 그들은) 테이블에 있습니다. 나는 어떤 종류의 재귀가 필요하다고 가정하고 있지만 어디에서 연구를 시작할 지조차 모른다.
select
(Select Max(ParamValue) from EventDetail where id = base.id and ParamName = 'Item Code') as ItemCode,
(Select Sum(ParamValue) from EventDetail where id = base.id and ParamName = 'Amount') as Amount
from
(
select distinct id from EventDetail
) base
SQL 바이올린 : http://sqlfiddle.com/#!2/09b773/1/0
는 볼 주셔서 감사합니다!
현재 행 3 행 4, 5 행으로가는 것을 이해하는 방법이 될 것 같지 않습니다 : 우리가 다음을 수행 위와 같이 myOrder이 열을 호출하는가는
그룹화를 얻으려면 6 번 행 등이 있습니다. 테이블의 다른 열? 그렇지 않다면 예측 가능하고 결정론적인 방식으로 해결할 수 있다는 것을 모릅니다. 인덱스를 추가하는 것과 같은 방법으로 SQL Server가 이러한 행을 정렬하는 방법을 결정할 수 있습니다. –
불행히도 행을 서로 연결하는 다른 열은 없습니다. 이 시점에서 나는 그들이 순차적으로 삽입되었다는 가정을해야한다. (나는 이것도 싫어한다.) 당신이 맞아요, 인덱스 변경 완전히 이것을 망칠 수 있습니다. – koolaide
행을 검색하는 순서가 변경되지 않는다는 가정과 동일하게 데이터 모델을 수정하거나 죄송합니다. 또는 클라이언트에이 정보를 조 변경해야합니다. 관계형으로 원하는 것을 표현할 방법이 없습니다. 테이블은 정의에 따라 정렬되지 않은 행 모음입니다. "순차적으로 삽입"에 대한 가정을 할 수는 없습니다. 이것은 관계형 데이터베이스가 작동하는 방식이 아닙니다 (하지만 Access와 같은 장난감에서 벗어날 수 있습니다). –