Cách sắp xếp ngày tháng trong Query Crosstab MS Access

Liên hệ QC

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia
18/3/08
Bài viết
8,282
Được thích
15,781
Giới tính
Nam
Nghề nghiệp
Làm ruộng.
Chào các anh chị GPE,

Nhờ các anh chị xem giúp dùm đoạn truy vấn bên dưới sao nó không chịu sắp xếp theo tháng được.

PHP:
TRANSFORM Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [SumOfSumOfOrder Amount]
SELECT [Q_Monthly Order Forecast].[Buyer Name], Sum([Q_Monthly Order Forecast].[SumOfQ'ty]) AS [Total Q'Ty], Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [Total FOB Amount]
FROM [Q_Monthly Order Forecast]
GROUP BY [Q_Monthly Order Forecast].[Buyer Name]
ORDER BY [Q_Monthly Order Forecast].[Buyer Name], Format([Shipment],"mmm-yyyy")
PIVOT Format([Shipment],"mmm-yyyy");

Cám ơn anh chị nhiều
 
Cái đoạn này:
PHP:
ORDER BY [Q_Monthly Order Forecast].[Buyer Name], Format([Shipment],"mmm-yyyy")
Theo bạn thì Jan Feb cái nào sẽ đứng trước, Mar Apr cái nào sẽ đứng trước. Theo mình nghĩ, Format() sẽ trả về giá trị là String/Text.
Bạn thử Order by mà không dùng Format xem sao!?
PHP:
ORDER BY [Q_Monthly Order Forecast].[Buyer Name], [Q_Monthly Order Forecast].[Shipment]
 
Lần chỉnh sửa cuối:
Vẫn không được anh ơi
Nó báo lỗi như file đính kèm
Nhờ anh xem lại giúp
Cám ơn anh
 

File đính kèm

  • Crosstab.jpg
    Crosstab.jpg
    61.1 KB · Đọc: 65
Field [Shipment] có nằm trong Query [Q_Monthly Order Forecast] anh ạ
Em post bài lên rồi anh xem và giúp dùm em nhé
Cám ơn anh
 

File đính kèm

  • CROSSTAB.rar
    45.2 KB · Đọc: 59
Field [Shipment] có nằm trong Query [Q_Monthly Order Forecast] anh ạ
Em post bài lên rồi anh xem và giúp dùm em nhé
Cám ơn anh

Trong đoạn Query bạn sửa ở trên mà không sửa ở dưới. Bạn sửa lại như sau:
[highlight=vb]TRANSFORM Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [SumOfSumOfOrder Amount]
SELECT [Q_Monthly Order Forecast].[Buyer Name] AS Expr1, Sum([Q_Monthly Order Forecast].[SumOfQ'ty]) AS [Total Q'Ty], Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [Total FOB Amount]
FROM [Q_Monthly Order Forecast]
GROUP BY [Q_Monthly Order Forecast].[Buyer Name]
ORDER BY [Q_Monthly Order Forecast].[Buyer Name], [Q_Monthly Order Forecast].[Shipment]
PIVOT [Q_Monthly Order Forecast].[Shipment]; '<== Sửa chỗ này nữa
[/highlight]

Nếu muốn Sum theo tháng, có lẽ động tác query trước đó [Q_Monthly Order Forecast] bạn phải sửa lại thôi. Thêm cột Period vào (yyyymm) thì mới Group by được.
 

File đính kèm

  • CROSSTAB.rar
    46.4 KB · Đọc: 51
Lần chỉnh sửa cuối:
Lại phiền anh nữa rồi,

Em làm theo cách của anh hướng dẫn để sắp xếp theo tháng
Query trước đó [Q_Monthly Order Forecast] --> em sừa như sau:

PHP:
SELECT [tbl_Material List].[Buyer Name], Sum([tbl_Material List].[Q'ty]) AS [SumOfQ'ty], Sum([tbl_Material List].[Order Amount]) AS [SumOfOrder Amount], [tbl_Material List].Shipment, Format([Shipment],"mmm-yyyy") AS Shipment1
FROM tbl_DowellPO, [tbl_Material List]
GROUP BY [tbl_Material List].[Buyer Name], [tbl_Material List].Shipment, Format([Shipment],"mmm-yyyy");

Và Query Q_Monthly Order Forecast_FOB như sau:

PHP:
TRANSFORM Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [SumOfSumOfOrder Amount]
SELECT [Q_Monthly Order Forecast].[Buyer Name] AS Expr1, Sum([Q_Monthly Order Forecast].[SumOfQ'ty]) AS [Total Q'Ty], Sum([Q_Monthly Order Forecast].[SumOfOrder Amount]) AS [Total FOB Amount]
FROM [Q_Monthly Order Forecast]
GROUP BY [Q_Monthly Order Forecast].[Buyer Name]
ORDER BY [Q_Monthly Order Forecast].[Buyer Name], [Q_Monthly Order Forecast].Shipment1
PIVOT [Q_Monthly Order Forecast].Shipment1;

Vẫn không sắp xếp được, nhờ anh xem lại dủm em
Em cám ơn nhiều
 
Đâu phải làm như thế bạn ơi! Bạn xem hai đoạn query sau đâu để thực hiện nha:
1. [Q_Monthly Order Forecast]
[highlight=vb]
SELECT B.[Buyer Name], Sum(B.[Q'ty]) AS [SumOfQ'ty],
Sum(B.[Order Amount]) AS [SumOfOrder Amount],
Right(B.Shipment,4) & mid(B.Shipment,4,2) AS Period
FROM [tbl_DowellPO] As A , [tbl_Material List] As B
GROUP BY B.[Buyer Name], Right(B.Shipment,4) & Mid(B.Shipment,4,2);
[/highlight]


2. [Q_Monthly Order Forecast_FOB]
[highlight=vb]
TRANSFORM Sum(a.[SumOfOrder Amount]) AS [SumOfSumOfOrder Amount]
SELECT a.[Buyer Name] AS BuyerName, Sum(a.[SumOfQ'ty]) AS [Total Q'Ty],
Sum(a.[SumOfOrder Amount]) AS [Total FOB Amount]
FROM [Q_Monthly Order Forecast] As a
GROUP BY a.[Buyer Name]
ORDER BY a.[Buyer Name], a.[Period]
PIVOT a.[Period];[/highlight]

Lưu ý:
- Trong câu lệnh truy vấn, tên Table dài quá thì bạn nên đặt một Alias để dễ viết hơn. Bạn xem, mình viết code nó ngắn hơn rất nhiều và dễ nhìn nữa.
- Khi đặt tên Field cho table hay query, không nên đặt tên có khoản trắng và các ký tự đặc biệt (dấu ' cũng coi là ký tự đặc biệt, bạn có dùng SumOfQ'ty --> sao không dùng SumOfQty
 

File đính kèm

  • CROSSTAB.rar
    43.2 KB · Đọc: 56
Lần chỉnh sửa cuối:
Wow cám ơn anh nhiều, đúng là bật thầy về MS Office
Cám ơn lời chỉ bảo tận tình của anh.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom