1
쿼리 중에 테이블을 그룹화해야하며 쿼리를 통해 알기 전까지 - 코드가 그룹화되어 있으므로 매우 복잡합니다. 그러나 새로운 데이터를 사용하면 몇 분이 걸릴 것으로 보이며 더 나은 방법이 있다고 생각합니다. 이에그룹별로 집계가없는 열로 행 변환
나의 현재 쿼리 결과 :
FKId | Name | A | B | C
1 Alpha 2 3 2
1 Beta 2 5 7
2 Alpha 8 1 10
2 Beta 7 -5 6
2 Gamma 1 2 3
그리고 내가이 변환 :
FKId | Alpha[A] | Alpha[B] | Alpha[C] | Beta[A] | Beta[B] | Beta[C] | Gamma[A] | Gamma[B] | Gamma[C]
1 2 3 2 2 5 7
2 8 1 10 7 -5 6 1 2 3
는 SQL로 할 수 있습니까?
- 이름은 무엇
- I는 A, B, C (- 30 20 등) colums의 매우 큰 숫자가 될 수있다 (그리고 나는 코드로이 작업을 수행 할 경우보다 훨씬 더 빨리해야 가정). 평균 프로젝트의 이름이 약 100 개이므로 결과 열의 수는 쉽게 수천 개가 될 수 있습니다.
- 필자는 그룹화해야하는 10-20 열과 비슷하지만 FKId가 단일 그룹을 만드는 것이 좋습니다.이 열은 동일합니다.
- 다른 SQL DB를 사용하므로
PIVOT
과 같은 특정 기능을 사용할 수 없습니다. 나는 우리가 MySQL, MsSQL과 SQLite를 많이 사용한다는 것을 알고있다. - 차이가 있다면 NHibernate를 사용한다.
- 특정 기능이 사용되는 경우
MySQL
에 대해 수행 된 솔루션을 존중합니다. 우리는 80 %에서 그것을 사용하고 MySQL을 위해 최소한 그렇게 할 수 있다면 이미 평균 성능을 크게 향상시킬 것입니다.
이것은 좋은 해결책이지만, 불행하게도이 이름을 알 필요 - 나는 시간에 그들을 모른다 나는 쿼리를 구성한다. – Archeg
나는 내 코드에서 비슷한 해결책을 겪었다. 내 생각에 가장 좋은 대안은 변수 이름을 사용하여 응용 프로그램 코드에서 쿼리를 구성하는 것입니다. 쿼리가 생성되면 execute 명령을 사용하여 SQL에서 해당 쿼리를 실행합니다. 사용할 DB에서 동적 SQL 쿼리를 실행하는 구문을 참조하십시오. –