테이블의 고유 값을 기반으로 열을 사용하여 쿼리

ealexander

3 개의 컬럼이 포함 된 테이블이 있습니다. Location_ID, Product_ID 및 Qty :

LOCATION_ID |   PRODUCT_ID    |  QTY
--------------------------------
1                   1              1
2                   1              3
1                   3              5
2                   3              2
2                   4              2
1                   4              5

제품이 위치를 출입 할 때마다이 테이블에서 행이 생성되거나 업데이트됩니다.

테이블에있는 Location_ID 수에 따라 열을 추가하는 쿼리를 만들 수 있습니까?

결과가 다음과 같기를 바랍니다.

PRODUCT_ID | 1 | 2 |
--------------------
    1        1   3
    3        5   2
    4        5   2 

나중에 LOCATION_ID가 더 추가되면 쿼리에 위치 ID (3)라는 이름의 새 열이 있습니다.

페텀

이를 위해 동적 SQL을 사용해야합니다.

SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT
         CONCAT('SUM(CASE WHEN location_id = ', location_id,
                ' THEN qty END) `', location_id, '`'))
  INTO @sql
  FROM table1;

SET @sql = CONCAT('SELECT product_id, ', @sql, ' 
                     FROM table1 
                    GROUP BY product_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

산출:

| PRODUCT_ID | 1 | 2 | 
| ------------ | --- | --- | 
| 1 | 1 | 3 | 
| 3 | 5 | 2 | 
| 4 | 5 | 2 |

다음은 SQLFiddle 데모입니다.


클라이언트 쪽에서 작업을 단순화하기 위해 항상 저장 프로 시저로 래핑 할 수 있습니다.

DELIMITER $$
CREATE PROCEDURE products_by_location()
BEGIN
  SET @sql = NULL;

  SELECT GROUP_CONCAT(DISTINCT
           CONCAT('SUM(CASE WHEN location_id = ', location_id,
                  ' THEN qty END) `', location_id, '`'))
    INTO @sql
    FROM table1;

  SET @sql = CONCAT('SELECT product_id, ', @sql, ' 
                       FROM table1 
                      GROUP BY product_id');

  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

그리고 그것을 사용하십시오

CALL products_by_location();

다음은 SQLFiddle 데모입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 테이블 열의 값을 기반으로하는 쿼리 테이블

분류에서Dev

특정 열의 값을 기반으로 테이블의 값을 서로 비교하고 Null을 무시하는 차이점 만 표시하는 쿼리

분류에서Dev

쿼리 빌더 조인을 사용하여 여러 테이블에서 고유 한 값 가져 오기

분류에서Dev

다른 테이블의 열 값을 기반으로 한 테이블에서 선택하는 SQL 쿼리

분류에서Dev

고유 한 열 조합을 기반으로 Oracle SQL을 사용하여 동일한 테이블의 행 비교

분류에서Dev

쿼리를 실행하여 테이블을 기반으로 고유 레코드 찾기

분류에서Dev

FK 값을 기반으로하는 쿼리 테이블

분류에서Dev

쿼리를 사용하여 특정 이벤트 값을 기반으로 테이블을 피벗하려면

분류에서Dev

다른 테이블의 값을 기반으로하는 SQL 쿼리

분류에서Dev

asp.net을 사용하여 내 테이블 값을 기반으로 그리드의 값 설정

분류에서Dev

다른 열을 기반으로하는 고유 한 쿼리

분류에서Dev

여러 레코드가있는 테이블에서 다른 열의 고유 값을 기반으로 값 추가

분류에서Dev

하나의 열 값을 기준으로 3 개의 테이블에서 값을 분리하는 SQL 쿼리

분류에서Dev

주어진 값으로 테이블에서 값을 찾고 유사한 다른 값을 찾는 MySQL 쿼리

분류에서Dev

하나의 열을 합산하고 공통 값을 기준으로 두 테이블에서 다른 열을 계산하는 MySQL 쿼리?

분류에서Dev

여러 테이블을 기반으로하는 SELECT 쿼리

분류에서Dev

다른 열과 고객 ID의 최소값을 기준으로 값을 반환하는 쿼리?

분류에서Dev

3 개의 열에 null 값이있을 때 쿼리를 사용하여 테이블에서 행 숨기기

분류에서Dev

여러 열의 고유 한 값을 기반으로 열 합계

분류에서Dev

다른 테이블의 값을 기반으로 값을 선택하는 SELECT 쿼리

분류에서Dev

테이블의 값을 기반으로 열 머리글 반환

분류에서Dev

왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

분류에서Dev

MySQL 쿼리-여러 테이블 사이의 값을 계산하고 ID로 그룹화

분류에서Dev

SQL SELECT를 사용하여 다른 테이블의 특정 행을 기반으로 테이블을 쿼리하는 방법

분류에서Dev

SQL 쿼리-다른 열의 값을 기반으로 열을 만든 다음 열을 사용하여 왼쪽 조인을 수행하여 다른 값을 가져 오려고합니다.

분류에서Dev

MySql 'Insert Ignore into'쿼리를 사용하여 다른 테이블의 일부 값을 기반으로 레코드를 삽입하는 방법

분류에서Dev

열의 고유 값을 기반으로 열 값을 계산하는 Apache Spark

분류에서Dev

맞춤 매개 변수를 기반으로 한 테이블 이름에서 Python과 유사한 문자열 형식을 사용하여 Google 데이터 스튜디오에서 BigQuery 테이블을 쿼리하는 방법은 무엇입니까?

분류에서Dev

동일한 테이블의 다른 열 값을 기반으로 테이블에서 날짜를 추출하는 SQL 쿼리?

Related 관련 기사

  1. 1

    다른 테이블 열의 값을 기반으로하는 쿼리 테이블

  2. 2

    특정 열의 값을 기반으로 테이블의 값을 서로 비교하고 Null을 무시하는 차이점 만 표시하는 쿼리

  3. 3

    쿼리 빌더 조인을 사용하여 여러 테이블에서 고유 한 값 가져 오기

  4. 4

    다른 테이블의 열 값을 기반으로 한 테이블에서 선택하는 SQL 쿼리

  5. 5

    고유 한 열 조합을 기반으로 Oracle SQL을 사용하여 동일한 테이블의 행 비교

  6. 6

    쿼리를 실행하여 테이블을 기반으로 고유 레코드 찾기

  7. 7

    FK 값을 기반으로하는 쿼리 테이블

  8. 8

    쿼리를 사용하여 특정 이벤트 값을 기반으로 테이블을 피벗하려면

  9. 9

    다른 테이블의 값을 기반으로하는 SQL 쿼리

  10. 10

    asp.net을 사용하여 내 테이블 값을 기반으로 그리드의 값 설정

  11. 11

    다른 열을 기반으로하는 고유 한 쿼리

  12. 12

    여러 레코드가있는 테이블에서 다른 열의 고유 값을 기반으로 값 추가

  13. 13

    하나의 열 값을 기준으로 3 개의 테이블에서 값을 분리하는 SQL 쿼리

  14. 14

    주어진 값으로 테이블에서 값을 찾고 유사한 다른 값을 찾는 MySQL 쿼리

  15. 15

    하나의 열을 합산하고 공통 값을 기준으로 두 테이블에서 다른 열을 계산하는 MySQL 쿼리?

  16. 16

    여러 테이블을 기반으로하는 SELECT 쿼리

  17. 17

    다른 열과 고객 ID의 최소값을 기준으로 값을 반환하는 쿼리?

  18. 18

    3 개의 열에 null 값이있을 때 쿼리를 사용하여 테이블에서 행 숨기기

  19. 19

    여러 열의 고유 한 값을 기반으로 열 합계

  20. 20

    다른 테이블의 값을 기반으로 값을 선택하는 SELECT 쿼리

  21. 21

    테이블의 값을 기반으로 열 머리글 반환

  22. 22

    왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

  23. 23

    MySQL 쿼리-여러 테이블 사이의 값을 계산하고 ID로 그룹화

  24. 24

    SQL SELECT를 사용하여 다른 테이블의 특정 행을 기반으로 테이블을 쿼리하는 방법

  25. 25

    SQL 쿼리-다른 열의 값을 기반으로 열을 만든 다음 열을 사용하여 왼쪽 조인을 수행하여 다른 값을 가져 오려고합니다.

  26. 26

    MySql 'Insert Ignore into'쿼리를 사용하여 다른 테이블의 일부 값을 기반으로 레코드를 삽입하는 방법

  27. 27

    열의 고유 값을 기반으로 열 값을 계산하는 Apache Spark

  28. 28

    맞춤 매개 변수를 기반으로 한 테이블 이름에서 Python과 유사한 문자열 형식을 사용하여 Google 데이터 스튜디오에서 BigQuery 테이블을 쿼리하는 방법은 무엇입니까?

  29. 29

    동일한 테이블의 다른 열 값을 기반으로 테이블에서 날짜를 추출하는 SQL 쿼리?

뜨겁다태그

보관