[SQL] 한 열에서 여러 행을 삽입하는 방법 [마감]
SQL한 열에서 여러 행을 삽입하는 방법 [마감]
나는 하나 개의 컬럼에 여러 행을 삽입 할.
이처럼 내 POS 시스템의 경우.
표 A :
Transaction ID| Item Code|Qty|Total|Transaction Date|
-----------------------------------------------------
00001 | Item 1 |3 |100 |12/07/2014 |
00001 | Item 2 |2 |50 |12/07/2014 |
00001 | Item 3 |1 |150 |12/07/2014 |
그 후 나는 내 테이블이보고 싶어
Transaction ID|Item Code |Total of Qty|Total of Price|Transaction Date|
-----------------------------------------------------------------------------------
00001 |Item 1, Item 2, Item 3| 6 | 150 | 12/07/2014 |
해결법
-
==============================
1.사용 GROUP_CONCAT 그룹에 의해에서 함께 CONCATENATE 문자열에 :
사용 GROUP_CONCAT 그룹에 의해에서 함께 CONCATENATE 문자열에 :
SELECT TransactionID, GROUP_CONCAT(ItemCode) AS ItemCodes, SUM(Qty) AS TotalofQty, SUM(Total) AS TotalPrice, TransactionDate FROM TableA GROUP BY TransactionID, TransactionDate;
여기 SqlFiddle
편집 SQLSERVER에 RDBMS를 변경 한 후, 해킹은 GROUP_CONCAT 같은 기능을 접는 문자열의 SQLSERVER의 부족을 보상하기 위해 필요합니다. 다음은 XML의 PATH 하나에 대한 물건 /의 :
SELECT a.[Transaction ID], STUFF(( SELECT ',' + [Item Code] FROM TableA WHERE [Transaction ID] = a.[Transaction ID] FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ItemCodes, SUM(Qty) AS TotalofQty, SUM(Total) AS TotalPrice, [Transaction Date] FROM TableA a GROUP BY a.[Transaction ID], a.[Transaction Date];
수동으로 각각의 외부 쿼리와 함께 물건 하위 쿼리 상관 관계를해야합니다.
SQLSERVER 바이올린
-
==============================
2.거기에는 빌드 - SQL Server의 CONCAT 기능이없고 나는 그런있을 것입니다 의심 사실이다. 그 이유는 사용자 정의 집계 CLR은을 만드는 데 매우 간단하다. 사실, 이미 MSDN에 예있다. 당신이 GROUP_CONCAT 함수를 만들 필요가 모든 여기에서 찾을 수 있습니다 - 문자열 유틸리티 함수를.
거기에는 빌드 - SQL Server의 CONCAT 기능이없고 나는 그런있을 것입니다 의심 사실이다. 그 이유는 사용자 정의 집계 CLR은을 만드는 데 매우 간단하다. 사실, 이미 MSDN에 예있다. 당신이 GROUP_CONCAT 함수를 만들 필요가 모든 여기에서 찾을 수 있습니다 - 문자열 유틸리티 함수를.
기본적으로, 당신은 아래의 단계를 수행합니다 :
그런 다음 표준 집계 함수로이 기능을 사용할 수 있습니다 :
SELECT TransactionID, [dbo].Concatenate(ItemCode) AS ItemCodes, SUM(Qty) AS TotalofQty, SUM(Total) AS TotalPrice, TransactionDate FROM TableA GROUP BY TransactionID, TransactionDate;
참고, 나는 몇 년 동안 CLR 통합에 대한 알려져 있지만 몇 달 전에 그것을 사용하기 시작했다. 당신은 대량의 데이터 수집 작업 할 때 성능 차이는 크다.
from https://stackoverflow.com/questions/27340688/how-to-insert-multiple-row-from-one-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 달력 도착 및 출발 날짜 예약 (0) | 2020.07.19 |
---|---|
[SQL] PostgreSQL을에서 id 컬럼 위치가 중요한가요? (0) | 2020.07.19 |
[SQL] SqlCommand를 INSERT INTO 쿼리가 실행되지 않습니다 (0) | 2020.07.19 |
[SQL] 스파크 dataframe 그룹화는 널 (null)을 계산하지 않습니다 (0) | 2020.07.19 |
[SQL] 고유의 페이지 뷰를 추적하기위한 PHP 세션 (0) | 2020.07.19 |