SQL 질문 .. SQL 쿼리 결과 세트에 열을 어떻게 동적으로 추가 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/763454

  •  11-09-2019
  •  | 
  •  

문제

데이터베이스의 개체 ( '파일')에 대한 세부 정보를 반환하기 위해 보고서를 작성하고 있습니다. 내 응용 프로그램을 사용하면 사용자가 파일 개체에 대해 사용하기 위해 고유 한 플래그를 만들 수 있습니다. 플래그는 기본적으로 이름으로 구성되며 플래그 인스턴스 인스턴스는 비트 값을 저장하여 상위 파일 개체에 대해 설정되어 있는지 여부를 표시합니다.

데이터베이스에서 파일 당 한 행을 반환하는 쿼리를 쓰고 싶습니다. 결과 세트의 처음 몇 열에 파일 세부 사항 (ID, 이름, 크기 등)이 포함되어 있고 나머지 열은 플래그 이름이며 비트 값이 반환됩니다. 주어진 파일 행에 플래그가 설정되어 있는지 표시합니다.

말이 돼? 쿼리를 작성하려면 어떻게해야합니까?

도움을 주셔서 감사합니다.

편집 : 설명 ..

이 쿼리의 일부로, 사용자가 작성한 플래그를 반환하는 하위 쿼리를 실행해야합니다 (설계 시간에 알 수 없습니다). 그런 다음 기본 쿼리에 각 플래그 값에 대한 확인을 통합하여 세부 사항을 반환합니다. 파일에 대해.

다음과 같이 단순화 된 스키마 :

  • 파일 {id, name}
  • 플래그 {id, name}
  • fileflags {fileId, flagid} -이 테이블의 행은 파일의 플래그가 설정되었음을 나타냅니다.

쿼리가 다음과 같은 열이있는 결과 세트를 반환해야합니다.

FileId 파일 이름 flag1name flag2name .... 깃대

도움이 되었습니까?

해결책

당신은 그것을 보면서 시작할 수 있습니다 피벗 SQL Server 2005+에서 사용 가능한 기능. 그것과 일부 문자열 연결을 사용하면 여러 열에 대한 쿼리를 조립할 수 있어야합니다.

귀하의 의견을 바탕으로 귀하의 선택은 다음과 같이 보입니다.

        SELECT <non-pivoted column>,

            [first pivoted column] AS <column name>,

            [second pivoted column] AS <column name>, ...
    From Table 
    PIVOT (
...
FOR 
...
)

다른 팁

필수 로직 - 쿼리 사용자 별 플래그 등으로 저장된 프로 시저를 작성해보십시오. 해당 기준으로 필요한 변수와 함께 쿼리 문자열을 동적으로 빌드하십시오.

그런 다음 사용할 수 있습니다 EXECUTE 설정된 동적 쿼리를 사용자에게 반환합니다. 보다 http://msdn.microsoft.com/en-us/library/ms188332.aspx

줄을 열로 전환하려는 Crosstab 쿼리가 필요한 것 같습니다. 플래그는 별도의 테이블에 저장되어 부모 테이블과의 관계가 하나에서 많은 관계입니까?

당신이 원하는 것은 별명이라고 생각합니다. 다음은 예입니다 http://www.sql-tutorial.net/sql-aliases.asp

SELECT Employee, SUM(Hours) AS SumHoursPerEmployee
FROM EmployeeHours
GROUP BY Employee 

더 도움이 되려면 스키마를 봐야 할 것입니다.

편집하다아마도 중첩이 필요할 수도 있습니다 SELECT에스.http://sqlzoo.net/1a.htm

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top