とDISTINCT SELECT:SQL - 私はこのような表持つフィールド移調
cod_amb | param | value |
21 | field_a | N.A., Conif |
21 | field_b | Fixed, Temp |
21 | field_c | N.A. |
21 | field_d | N.A., >5 years |
21 | field_e | Natural, Artificial |
24 | field_a | N.A., NR |
24 | field_b | Fixed, Temp |
24 | field_c | N.A. |
24 | field_d | N.A., <5 years |
24 | field_e | Natural |
は、誰が私を助けることができるしてください:私はこのような結果のテーブルを取得する必要があります
cod_amb | field_a | field_b | field_c | field_d | field_e
21 | N.A. | Fixed | N.A. | N.A. | Natural
21 | Conif | Temp | N.A. | >5 years| Artificial
21 | N.A. | Fixed | N.A. | N.A. | Natural
24 | N.A. | Fixed | N.A. | N.A. | Natural
24 | NR | Fixed | N.A. | <5 years| Natural
24 | N.A. | Temp | N.A. | N.A. | Natural
21 | N.A. | Fixed | N.A. | N.A. | Natural
を?前もって感謝します。アクセス2007
@@@@@@@@@@@@@@@@@@@@@@
UPDATE
ため
SQLは、私はAccessでこのルーチンを書いた:
Sub printSQL()
Dim db As Database
Set db = CurrentDb()
Dim tab As String
tab = "tab_011"
Dim rs1 As dao.Recordset
Set rs1 = db.OpenRecordset(tab)
Dim sqlAll As String
Dim str() As String
Dim i As Integer
i = 0
ReDim str(i)
Dim fld As dao.Field
For Each fld In rs1.Fields
If fld.Name = "Area" Then
ElseIf fld.Name = "lungh" Then
ElseIf fld.Name = "id_elem" Then
ElseIf fld.Name = "id_tass" Then
ElseIf fld.Name = "x_coord" Then
ElseIf fld.Name = "y_coord" Then
Else
str(i) = "SELECT cod_amb, '" & fld.Name & "' AS Param, " & fld.Name & " AS Val "
i = i + 1
ReDim Preserve str(i)
End If
Next
Set fld = Nothing
i = 0
For i = 0 To UBound(str) - 1
If i = 0 Then
sqlAll = str(i) & "FROM " & tab & " UNION "
ElseIf i > 0 And i < UBound(str) - 1 Then
sqlAll = sqlAll & str(i) & "FROM " & tab & " UNION "
ElseIf i = UBound(str) - 1 Then
sqlAll = sqlAll & str(i) & "FROM " & tab & ";"
End If
Next
Debug.Print sqlAll
End Sub
ルーチンの出力は、このような文字列である:私は実行最後に
SELECT tab_011.cod_amb, "type_veg" AS Param, type_veg AS Val
FROM tab_011
UNION
SELECT tab_011.cod_amb, "type_acq" AS Param, type_acq AS Val
FROM tab_011
UNION
SELECT tab_011.cod_amb, "status" AS Param, status AS Val
FROM tab_011
UNION
SELECT tab_011.cod_amb, "num_pnt" AS Param, num_pnt AS Val
FROM tab_011
UNION
SELECT tab_011.cod_amb, "terr" AS Param, terr AS Val
FROM tab_011;
この文字列をAccessでユニオンクエリとして使用し、結果の表をExcelでエクスポートします。
結果の表は、上記の出力とわずかに異なります。違いは、列Valに連結された文字列ではなく単一のオカレンスが含まれていることです。
何SQLクエリは、あなたの書かれたと試してみましたか? –