2013-11-26 4 views
0

Access 데이터베이스로 sql을 가져오고 올바른 테이블과 필드로 데이터를 구문 분석하려고합니다. 내 수입이 열 이름을 생성하고 컬럼에 값을 입력 나는이 문제에 실행되었지만 데이터베이스는 별도의 열Access에서 행 필드로 사용할 열 이름 변환

현재 테이블

SC | DO | temp | pH | etc 

val|val | val |val | val 

테이블에 행 값으로 그 열 이름과 값을 사용 나는 결과 열이 잘 채울 수있는 통합 쿼리를 수행 한

Characteristic_Name | Result_Value 

SC     | val 
DO     | val 
temp    | val 
pH     | val 
etc.    | val 

으로 구문 분석을 시도하고 있지만 열 이름이 할 수있는 방법이 있나요 을 구문 분석 얻을 수 없다? 보조 노트, 당신은 UNION을하고있다 ALL 또는 UNPIVOT으로

select 'SC' as Characteristic_Name, SC as Val 
from yourtable 
union all 
select 'DO' as Characteristic_Name, DO as Val 
from yourtable 
union all 
select 'temp' as Characteristic_Name, temp as Val 
from yourtable 
union all 
select 'pH' as Characteristic_Name, pH as Val 
from yourtable 
union all 
select 'etc' as Characteristic_Name, etc as Val 
from yourtable; 

, 데이터 유형이해야합니다 당신은 MS Access를 사용하고 있기 때문에 당신이 UNION 모든 쿼리를 사용할 수 있도록

+0

[UNPIVOT] (http://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx)을 사용해보십시오. – user2989408

+1

@ user2989408 MS Access에 UNPIVOT 기능이 없습니다. – Taryn

+0

@bluefeet 답변에 표시된대로 수행해야합니다. – user2989408

답변

3

, 아니 UNPIVOT 기능이 없다 같으므로 val 열의 데이터를 동일하게 변환해야 할 수 있습니다. 당신은 필드 이름을 추출하고 정규화 된 테이블에 삽입 데이터에 대한 SQL 문자열을 구성하는 데 필요한 코드를 추가 할 수 있습니다이와

Set db = CurrentDb() 
Set rs1 = db.OpenRecordset("CurrentTable") 
Dim fld As DAO.Field 
Dim SQL as string 
For Each fld In rs1.Fields 
    SQL = SQL & fld.Name & "," 
Next 
... 

:

+0

당신은 놀라워요 !! 아름답게 작동합니다! 고맙습니다 – pja

0

는이 유사한 VBA 기능을 만들 수 있습니다.

0

SQL 코드를 직접 사용하지 않으려면 Access Query 편집기를 사용하여 위의 작업을 수행 할 수 있습니다.

디자인 도구 모음에서 쿼리 디자인 단추를 누른 후 테이블의 모든 필드를 선택하십시오.

  • Characteristic_Name : "SC"
  • Characteristic_Value : SC

새로운 필드를 추가, 산도 등의 쿼리 편집기 탭에서

, SC, DO, 온도 필드를 제거

디자인 도구 모음에서 테이블 만들기 단추를 누르고 새 테이블 이름을 선택한 다음 쿼리를 실행하여이 테이블을 만듭니다.

그런 다음 다시 같은 쿼리를 열고 다음 필드 편집을 수행

  • Characteristic_Name을 "DO"
  • Characteristic_Value을 :

을하고 디자인 도구 모음에서 APPEND 테이블 버튼을 누르면 .

위와 동일한 새 테이블 이름을 선택하고 쿼리를 실행하십시오.

행의 수가 두 배가되는지 확인하십시오.편집을 위해 다시

는 반복 :

  • Characteristic_Name : 임시

끝에 당신이 행의 수만큼을 곱 한 체크 :

  • 이 Characteristic_Value는
  • "임시" 드롭하고자하는 컬럼의 수.

    위와 같이 빠른 것은 아니지만 누구나 자신의 문제, 특히 코드 오용에 대해 걱정하는 사람들에게 유용합니다.