하나의 레코드에 대한 관련 값이있는 테이블의 열 나열

딩 갈링 치킨

각 열 이름에 대한 데이터 샘플과 함께 테이블의 모든 열을 나열하는 쿼리를 작성 중입니다. 예를 들어 'first', 'last'및 'age'열이있는 'person'이라는 테이블이있는 경우 다음과 같이 나열해야합니다.

table_name    column_name    column_value
person        person_id      443
person        first          john
person        last           smith
person        age            48

이 쿼리의 목표는 실제로 주어진 테이블의 모든 열을 나열하는 것입니다. 세 번째 열 (column_value)에 데이터 값을 나열하여 백엔드에 대해 애플리케이션의 프런트 엔드를 확인하고 실제로 올바른 열을 처리하고 있는지 확인할 수 있습니다.

이 테이블에는 수백 또는 수천 개의 레코드가있을 수 있지만 일치하는 레코드 하나만 가져 오려고합니다. 주어진 테이블에서 작업중인 평균 테이블 열은 200 개 이상이므로 수동으로이 작업을 수행 할 수 없습니다.

다음은 테이블에서 모든 열을 가져 오는 데 사용하는 쿼리입니다.

SELECT table_name
       , COLUMN_NAME
       , '' AS column_value
FROM   information_schema.COLUMNS
WHERE  TABLE_NAME LIKE '%person%'
ORDER BY TABLE_NAME

이 쿼리는 다음 결과를 반환합니다 (column_value가 비어 있음에 유의).

table_name    column_name    column_value
person        person_id
person        first
person        last
person        age

고유 한 기본 키를 사용하여 가져올 단일 개인 레코드를 식별합니다. 이렇게하면 열 이름이 반복되지 않습니다 (예 : 개인을 가져올 때마다 사람 _ID / 이름 / 성 / 연령이 반복됨).

질문은 'column_value'열에서 선택한 특정 레코드의 값과 함께 열 목록으로 어떻게 변환합니까?

최신 정보

명확히하기 위해 기본적으로 이러한 유형의 쿼리 및 출력을 설정하려고합니다.

SELECT * FROM person WHERE person_id = 443;

** outputs this:
person_id    first    last    age
443          john     smith   48

이것으로 :

table_name    column_name    column_value
person        person_id      443
person        first          john
person        last           smith
person        age            48
톰 페이지

이런 식으로 시도해 볼 수 있습니다.

DECLARE @SchemaName sysname
DECLARE @TableName sysname
DECLARE @Colname sysname
DECLARE @SQL_Template nvarchar(max)
DECLARE @SQL nvarchar(max)

SET @SchemaName = 'Sales' 
SET @TableName = 'Customer' 

CREATE TABLE ##Results(Colname sysname, colvalue varchar(256))

SET @SQL_Template  = 'INSERT INTO ##Results(Colname,colvalue ) SELECT top 1 ''@Colname '' as Colname,'
                   + ' CONVERT(nvarchar(256),@Colname) AS ColValue'
                   + ' FROM ['+@SchemaName+'].['+@TableName+']'


DECLARE COL_CURSOR CURSOR STATIC FOR
SELECT c.name
FROM  sys.schemas s
 JOIN sys.tables t ON t.schema_id = s.schema_id
 JOIN  sys.columns c ON c.object_id = t.object_id
WHERE s.name = 'Sales' AND t.name = 'Customer'
OPEN COL_CURSOR 
FETCH NEXT FROM COL_CURSOR INTO @Colname
WHILE @@FETCH_STATUS =0
BEGIN
    SET @SQL = REPLACE(@SQL_Template,'@ColName',@ColName)
    PRINT @SQL
    EXEC sp_executesql  @SQL
FETCH NEXT FROM COL_CURSOR INTO @Colname
END
CLOSE COL_CURSOR 
DEALLOCATE COL_CURSOR 
SELECT * FROM ##Results
DROP TABLE ##Results

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

열과 관련하여 SQL 테이블에서 동일한 레코드 계산

분류에서Dev

SQL Server를 사용하여 동일한 테이블의 2 개 열에서 관련 레코드 추출

분류에서Dev

테이블의 레코드 수에 관계없이 각 열에 대해 하나의 레코드를 검색합니다.

분류에서Dev

다른 관련 테이블의 한 테이블에 열 값 입력

분류에서Dev

다른 관련 테이블의 한 테이블에 열 값 입력

분류에서Dev

다른 열 특정 값에 대한 값이있는 테이블에 하나의 열 추가

분류에서Dev

테이블에는 동일한 레코드에 대해 여러 항목이 있습니다. 동일한 레코드에 대해 다른 열 값이 최대 인 하나의 열 값을 가져와야합니다.

분류에서Dev

테이블이 서로 관련이 없을 때 순서대로 다른 테이블에서 테이블 열의 값을 업데이트하는 방법

분류에서Dev

하나의 테이블과 하나의 열 관계로 관계 테이블을 만드는 방법

분류에서Dev

다른 테이블과 관련된 하나의 열에 액세스하는 방법 Laravel 5.1

분류에서Dev

2 개의 열에 최대 값이있는 테이블에서 레코드를 선택하는 LINQ 쿼리

분류에서Dev

테이블의 모든 레코드에 대해 NULL 인 모든 열을 나열하는 PLSQL 스크립트를 만드는 방법이 있습니까?

분류에서Dev

한 테이블에서 열이 하나 더있는 다른 테이블로 레코드 복사

분류에서Dev

테이블에서 하나의 열 클러스터를 선택하고 관계 테이블에서 모든 레코드를 선택하는 방법 [Laravel 5]

분류에서Dev

하나의 열에 동일한 열 이름을 가진 레코드 범위 내의 값이있는 레코드 가져 오기

분류에서Dev

하나의 컨트롤러에서 두 개의 다른 테이블에 대한 레코드를 만드는 것이 나쁜 습관으로 간주됩니까?

분류에서Dev

DB2 : 열에 대한 관련 테이블 이름 검색

분류에서Dev

하나의 동일한 열이있는 다중 테이블 SQL

분류에서Dev

테이블에 대한 mysqldump는 하나의 레코드 만 덤프합니다.

분류에서Dev

다중 값 속성에 대한 값이 하나만있는 페이지 나열

분류에서Dev

관련 테이블의 각 색상 제품에 대한 행으로 크기 열을 표시합니까?

분류에서Dev

하나의 유사한 열이있는 두 테이블을 하나의 테이블로 결합하는 방법

분류에서Dev

POSTGRES의 자기 결합 테이블없이 여러 값에 대한 하나의 열을 일치

분류에서Dev

Postgres에 대한 데이터가있는 테이블 나열

분류에서Dev

3 개의 테이블이있는 JOIN 및 열 조합에 대한 MAX 값

분류에서Dev

다른 테이블의 두 열에 대한 장고 관계

분류에서Dev

열의 각 고유 값에 대해 상위 하나의 레코드 선택

분류에서Dev

Linux 라우팅 테이블의 대상에 대한 * 모든 * IP 경로 나열

분류에서Dev

하나의 테이블 레코드 간의 관계

Related 관련 기사

  1. 1

    열과 관련하여 SQL 테이블에서 동일한 레코드 계산

  2. 2

    SQL Server를 사용하여 동일한 테이블의 2 개 열에서 관련 레코드 추출

  3. 3

    테이블의 레코드 수에 관계없이 각 열에 대해 하나의 레코드를 검색합니다.

  4. 4

    다른 관련 테이블의 한 테이블에 열 값 입력

  5. 5

    다른 관련 테이블의 한 테이블에 열 값 입력

  6. 6

    다른 열 특정 값에 대한 값이있는 테이블에 하나의 열 추가

  7. 7

    테이블에는 동일한 레코드에 대해 여러 항목이 있습니다. 동일한 레코드에 대해 다른 열 값이 최대 인 하나의 열 값을 가져와야합니다.

  8. 8

    테이블이 서로 관련이 없을 때 순서대로 다른 테이블에서 테이블 열의 값을 업데이트하는 방법

  9. 9

    하나의 테이블과 하나의 열 관계로 관계 테이블을 만드는 방법

  10. 10

    다른 테이블과 관련된 하나의 열에 액세스하는 방법 Laravel 5.1

  11. 11

    2 개의 열에 최대 값이있는 테이블에서 레코드를 선택하는 LINQ 쿼리

  12. 12

    테이블의 모든 레코드에 대해 NULL 인 모든 열을 나열하는 PLSQL 스크립트를 만드는 방법이 있습니까?

  13. 13

    한 테이블에서 열이 하나 더있는 다른 테이블로 레코드 복사

  14. 14

    테이블에서 하나의 열 클러스터를 선택하고 관계 테이블에서 모든 레코드를 선택하는 방법 [Laravel 5]

  15. 15

    하나의 열에 동일한 열 이름을 가진 레코드 범위 내의 값이있는 레코드 가져 오기

  16. 16

    하나의 컨트롤러에서 두 개의 다른 테이블에 대한 레코드를 만드는 것이 나쁜 습관으로 간주됩니까?

  17. 17

    DB2 : 열에 대한 관련 테이블 이름 검색

  18. 18

    하나의 동일한 열이있는 다중 테이블 SQL

  19. 19

    테이블에 대한 mysqldump는 하나의 레코드 만 덤프합니다.

  20. 20

    다중 값 속성에 대한 값이 하나만있는 페이지 나열

  21. 21

    관련 테이블의 각 색상 제품에 대한 행으로 크기 열을 표시합니까?

  22. 22

    하나의 유사한 열이있는 두 테이블을 하나의 테이블로 결합하는 방법

  23. 23

    POSTGRES의 자기 결합 테이블없이 여러 값에 대한 하나의 열을 일치

  24. 24

    Postgres에 대한 데이터가있는 테이블 나열

  25. 25

    3 개의 테이블이있는 JOIN 및 열 조합에 대한 MAX 값

  26. 26

    다른 테이블의 두 열에 대한 장고 관계

  27. 27

    열의 각 고유 값에 대해 상위 하나의 레코드 선택

  28. 28

    Linux 라우팅 테이블의 대상에 대한 * 모든 * IP 경로 나열

  29. 29

    하나의 테이블 레코드 간의 관계

뜨겁다태그

보관