假設我有表中訪問毫秒以下信息:女士訪問查詢:通過查詢串聯行
ColumnA ColumnB
1 abc
1 pqr
1 xyz
2 efg
2 hij
3 asd
我的問題是,我怎麼可以連接在第二列中的值的行值基於第一列。我想要的查詢結果如下:
ColumnA ColumnB
1 abc, pqr, xyz
2 efg, hij
3 asd
我想通過查詢來實現這一點。有人可以幫我實現這個目標嗎?
假設我有表中訪問毫秒以下信息:女士訪問查詢:通過查詢串聯行
ColumnA ColumnB
1 abc
1 pqr
1 xyz
2 efg
2 hij
3 asd
我的問題是,我怎麼可以連接在第二列中的值的行值基於第一列。我想要的查詢結果如下:
ColumnA ColumnB
1 abc, pqr, xyz
2 efg, hij
3 asd
我想通過查詢來實現這一點。有人可以幫我實現這個目標嗎?
您需要一個函數來進行串接。
Microsoft Access condense multiple lines in a table
示例使用您的數據:
Select T.ColumnA
, GetList("Select ColumnB From Table1 As T1 Where T1.ColumnA = " & [T].[ColumnA],"",", ") AS ColumnBItems
From Table1 AS T
Group By T.ColumnA;
這可能是很難獲得。如果你必須在查詢中而不是函數中執行,那麼你將遇到的問題是可以連接成一列的行數的限制。到目前爲止,我發現實現這一目標的唯一方法是通過iif語句。
SELECT
test1.ColumnA AS ColumnA,
First([test1].[ColumnB]) & IIf(Count([test1].[ColumnB])>1,"," & Last([test1].[ColumnB])) AS ColumnB
FROM test1
GROUP BY test1.ColumnA;
回報:
ColumnA ColumnB
1 abc,xyz
2 efg,hij
3 asd
這將返回第一個也是唯一的最後一個,但我敢肯定有,你可以制定出選擇功能一點的工作,但就像我說你會爲每一個你想添加的項目添加更多的iif語句,因此限制。
下面是一個優秀的鏈接:如何通過調用函數從SQL內部完成此操作。該指令非常清晰&該功能是爲你寫的,所以你可以複製,粘貼&去。甚至有人沒有VB的知識,可以很容易地實現它: Concatenate values from related records
表可以有一個順序列,這使得它ColumnA序列中唯一的主鍵:
table: t1
ColumnA sequence ColumnB
1 1 abc
1 2 pqr
1 3 xyz
2 1 efg
2 2 hij
3 1 asd
而且交叉表可能是創建:
query: x1
TRANSFORM Min([columnB] & ", ") AS Expr1
SELECT t1.columnA
FROM t1
GROUP BY t1.columnA
PIVOT t1.sequence;
columnA 1 2 3
1 abc, pqr, xyz,
2 efg, hij,
3 asd,
然後,最終的查詢可以結合列和刪除最後一個逗號:
SELECT x1.columnA, Left([1] & [2] & [3],Len([1] & [2] & [3])-2) AS columnB FROM x1;
columnA columnB
1 abc, pqr, xyz
2 efg, hij
3 asd
要自動化序列中充填,下面VBA代碼可用於:
Sub fill_sequence_t1()
Dim i: i = 1
Do While DCount("*", "t1", "sequence IS NULL") > 0
DoCmd.RunSQL "SELECT t1.columnA, Min(t1.columnB) AS columnB_min INTO t2" & _
" FROM t1 WHERE t1.sequence IS NULL GROUP BY t1.columnA;"
DoCmd.RunSQL "UPDATE t1 INNER JOIN t2 ON (t1.columnA = t2.columnA)" & _
" AND (t1.columnB = t2.columnB_min) SET t1.sequence=" & i
CurrentDb.TableDefs.Delete "t2"
i = i + 1
Loop
End Sub
1)標準SQL沒有'Concat'設置功能:什麼將所得到的數據類型是什麼?它會違反1NF嗎?它會是一套嗎?如何查詢這些數據?等等; 2)Access2007引入了多值類型(http://www.theregister.co.uk/2006/07/18/multivalued_datatypes_access/print.html); 3)你有沒有考慮過報告?隨Access一起發貨的是相當不錯的。 – onedaywhen 2011-04-04 13:17:58