Tổng dữ liệu của 2 tháng và hiển thị dữ liệu tháng mới nhất, top 50

lập trình


Tôi có bảng chứa partno,location, col1,col2,measur1,measure2,measure3. Dựa trên Biện pháp 3 phải hiển thị 100 bản ghi hàng đầu.

vấn đề là bảng đang tải dữ liệu của hai tháng. chẳng hạn. tải dữ liệu tháng 1 + tháng 2. căn cứ vào partno, location, nếu có bản ghi trùng lặp thì phải lấy bản ghi mới nhất. trong truy vấn sql đang hoạt động. trong truy vấn sql tổng hợp dữ liệu hai tháng, tức là. jan =dec+jan, feb =feb+jan, xếp hạng trên đó và chiếm vị trí số 1. bằng cách này, bạn sẽ nhận được kỷ lục mới nhất. Làm thế nào nó đạt được trong power bi bằng cách sử dụng dax. không có bảng ngày hoặc cột. có tháng. ví dụ:nov2023=23, dec2023=24, jan2024=25, feb2024=26, mar2024=27, v.v.

có phần máy thái, vị trí. và trong bảng phải hiển thị số sê-ri từ 1 đến 100 cho các bản ghi đó.

Những gì tôi đã thử:

đã tạo ra thước đo để hiển thị top 50. Không sao đâu, nhưng cần phải có được bản ghi mới nhất.

Giải pháp 1

Bạn thực sự cần phải thay đổi DB của mình để đạt được điều này theo bất kỳ cách có ý nghĩa nào: lưu trữ dữ liệu dựa trên ngày theo chuỗi luôn là một ý tưởng tồi và việc so sánh chuỗi luôn dựa trên cặp ký tự khác nhau đầu tiên – những ký tự tiếp theo thậm chí không được xem xét. Vì vậy, thứ tự sẽ là:

apr2022
apr2023
aug2022
aug2023
dec2022
dec2023
feb2022
feb2023
jan2022
jul2022
jul2023
jun2022
jun2023
mar2022
mar2023
may2022
may2023
nov2022
nov2023
oct2022
oct2023
sep2022
sep2023

Đó là khá nhiều vô ích.

Mặc dù có thể làm được điều đó nhưng cần rất nhiều nỗ lực – và cả may mắn: chẳng hạn, một tên tháng bằng tiếng Pháp hoặc tiếng Đức sẽ làm rối mã của bạn ngay lập tức.

Hàm CAST sẽ cho phép bạn làm điều đó:

SQL
CAST('oct2023' AS DATE)

Sẽ cung cấp cho bạn 2023-10-01 nhưng nó sẽ bổ sung thêm nhiều quy trình xử lý và độ phức tạp cho các truy vấn của bạn – tất cả chúng – và vẫn không cung cấp cho bạn thứ tự bạn cần trong mỗi tháng vì dữ liệu của bạn không chứa nó: tất cả các ngày sẽ là ngày đầu tiên của tháng. Và nó sẽ đạt được hiệu suất cũng như số lượng hàng của bạn tăng lên.

Ít nhất, hãy thêm cột dấu thời gian (DATETIME hoặc DATETIME2) vào DB của bạn và đặt mặc định thành thời gian chèn (theo ưu tiên UTC) và sử dụng cột đó thay vì rác dựa trên chuỗi mà bạn hiện có.

コメント

タイトルとURLをコピーしました