2010-07-01 50 views
0

這裏的查詢:MS-訪問 - 分組select語句

SELECT [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)],Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [CountOf1 0 Preanalytical (Before Testing)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between [Forms]![Meeting_Reasons_Frequency]![Text4] And [Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] 
HAVING Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])<>0 

UNION SELECT [Lab Occurrence Form].[2 0 Analytical (Testing Phase)], Count([Lab Occurrence Form].[2 0 Analytical (Testing Phase)]) AS [CountOf2 0 Analytical (Testing Phase)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between [Forms]![Meeting_Reasons_Frequency]![Text4] And [Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[2 0 Analytical (Testing Phase)] 
HAVING Count([Lab Occurrence Form].[2 0 Analytical (Testing Phase)])<>0 

union 

SELECT [Lab Occurrence Form].[3 0 Postanalytical (After Testing)], Count([Lab Occurrence Form].[3 0 Postanalytical (After Testing)]) AS [CountOf3 0 Postanalytical (After Testing)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between [Forms]![Meeting_Reasons_Frequency]![Text4] And [Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[3 0 Postanalytical (After Testing)] 
HAVING Count([Lab Occurrence Form].[3 0 Postanalytical (After Testing)])<>0 

UNION SELECT [Lab Occurrence Form].[4 0 Other], Count([Lab Occurrence Form].[4 0 Other]) AS [CountOf4 0 Other] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between [Forms]![Meeting_Reasons_Frequency]![Text4] And [Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[4 0 Other] 
HAVING Count([Lab Occurrence Form].[4 0 Other])<>0 
ORDER BY 1, 2; 

它生成的東西,看起來像這樣:

1 0 Preanalytical (Before Testing) CountOf1 0 Preanalytical (Before Testing) 
1.11 Other-reject per practice 1 
1.11 Other-req form marked Validity Only 1 
1.11 Other-req form only, no specimen 3 
1.11 Other-spec sent by mistake 1 
1.11 Other-Test Req marked validity only 1 
1.11 Other-validity only 3 
1.11 Other-validity only-TP updated 1 
1.3 QNS-Quantity Not Sufficient 103 
1.4 Tests Missed/ Wrong Test Ordered 1 
1.4 Tests Missed/ Wrong Test Ordered & 1.11 Other-data entry-dup tests 2 
1.4 Tests Missed/Wrong Test Ordered 3 
1.5 Patient Info. entered Incorrectly 1 
1.6 Test Requisition Missing 22 
1.6 Test Requisition Missing & 1.7 Specimen Lost 2 
1.6 Test Requisition Missing-CSRM 1 
1.8 Specimen not handled/processed correctly & 1.10 Operator Error(?) 1 
1.8 Specimen not handled/processed correctly,1.10 Operator Error & 1.11 Other-no THC INSD recovery 1 
1.9 QNS- Specimen Spilled in transit 88 
2.1 Delay in Testing/resulting 1 
2.1 Delay in Testing/resulting & 2.22 Instrument Problem 4 

我想組和數量

總結的結果而不是有一堆1.11其他,我想總結它們並得到:

1.11 11 
1.3 103 
1.4 4 

所以我想我需要做的是選擇第一列的前4個字符,並將它按第一列分組,然後在第二列上做一筆總和?請幫我這個select語句

回答

1

使用瓦爾()

?val("1.11 Other-validity only-TP updated") 

1.11 

同樣工作在查詢。

+0

哎ramou!對不起,你可以在我的代碼中顯示我如何合併它? – 2010-07-01 19:16:04

1

可能:

SELECT left(TestType, 4), COUNT(*) FROM 
(SELECT [Lab Occurrence Form].[1 0 Preanalytical Before Testing)] As TestType, 
Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [CountOf1 0  Preanalytical (Before Testing)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between 
[Forms]![Meeting_Reasons_Frequency]![Text4] And 
[Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] 
HAVING Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])<>0 
UNION 
SELECT [Lab Occurrence Form].[2 0 Analytical (Testing Phase)], 
Count([Lab Occurrence Form].[2 0 Analytical (Testing Phase)]) AS 
[CountOf2 0 Analytical (Testing Phase)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between 
[Forms]![Meeting_Reasons_Frequency]![Text4] And 
[Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[2 0 Analytical (Testing Phase)] 
HAVING Count([Lab Occurrence Form].[2 0 Analytical (Testing Phase)])<>0 
union 
SELECT [Lab Occurrence Form].[3 0 Postanalytical (After Testing)], 
Count([Lab Occurrence Form].[3 0 Postanalytical (After Testing)]) AS 
[CountOf3 0 Postanalytical (After Testing)] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between 
[Forms]![Meeting_Reasons_Frequency]![Text4] And 
[Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[3 0 Postanalytical (After Testing)] 
HAVING Count([Lab Occurrence Form].[3 0 Postanalytical (After Testing)])<>0 
UNION 
SELECT [Lab Occurrence Form].[4 0 Other], Count([Lab Occurrence Form].[4 0 Other]) 
AS [CountOf4 0 Other] 
FROM [Lab Occurrence Form] 
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between 
[Forms]![Meeting_Reasons_Frequency]![Text4] And 
[Forms]![Meeting_Reasons_Frequency]![Text2])) 
GROUP BY [Lab Occurrence Form].[4 0 Other] 
HAVING Count([Lab Occurrence Form].[4 0 Other])<>0) A 
GROUP BY left(TestType, 4)