Apabila bekerja dengan pangkalan data SQL, selalunya menjadi perlu untuk mengumpulkan data mengikut tempoh masa, seperti bulan atau tahun. Secara lalai, klausa SQL GROUP BY mengumpulkan baris berdasarkan bulan atau tahun individu. Walau bagaimanapun, anda mungkin menghadapi situasi di mana anda perlu memaparkan keputusan dalam format yang lebih boleh dibaca oleh manusia, seperti "bulan-tahun".
Katakan anda mempunyai pertanyaan yang mengumpulkan data mengikut bulan dan tahun dan memaparkan keputusan seperti berikut:
SELECT MONTH(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY MONTH(date), YEAR(date)
Pertanyaan ini akan mengembalikan hasil dengan lajur pertama hanya menunjukkan bulan, cth., "9". Matlamatnya adalah untuk mengubah suai pertanyaan untuk memaparkan bulan dan tahun dalam format gabungan, seperti "9-2011".
Untuk mencapai matlamat ini, anda boleh menggunakan fungsi CAST untuk menukar nilai bulan dan tahun kepada rentetan:
SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, ...
Dengan menghantar nilai bulan dan tahun sebagai rentetan, anda boleh menggabungkannya menjadi rentetan tunggal yang menggabungkan bulan dan tahun dalam format "bulan-tahun" yang diingini.
Jika anda memerlukan sifar pendahuluan untuk nilai bulan, anda boleh menggunakan sintaks berikut:
GROUP BY CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2)
Ungkapan ini akan memastikan bahawa semua nilai bulan mempunyai sifar pendahuluan, menjadikan keputusan lebih konsisten dan menarik secara visual.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghimpunkan Keputusan SQL mengikut Bulan dan Tahun dalam Format Boleh Dibaca Manusia?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!