我有這樣的一個表:SQL - SELECT DISTINCT與現場換位
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
我一定要得到一個結果表是這樣的:
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 |
請,任何人可以幫助我嗎?提前致謝。
SQL對於Access 2007
@@@@@@@@@@@@@@@@@@@@@@
UPDATE
我在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查詢有你的書面和嘗試? –