@חייםיודלביץ
ראשית חשוב לי לומר שבמסד נתונים SQL הדרך הכי טובה לבניית טבלאות היא נירמול הנתונים.
כלומר, מבנה הטבלה (ובפרט מספר העמודות בטבלה) לעולם לא יהיה מושפע או תלוי במספר הרשומות שנכניס לתוכה.
למשל, אם יש ללקוחות כמה מספרי טלפון, לא אשמור אותם בעמודות Phone1, Phone2, אלא בטבלה נפרדת עם מפתח זר המפנה לטבלת הלקוחות.
ובנידון דידן, גם אם אני מתכנן לשמור נתונים של שנים על גבי שנים, לא אצור לכל שנה עמודה משלה, אלא אשמור את התאריך בעמודה אחת, ובמקרה הצורך, אסנן את הטבלה כולה על פיה.
בהנחה שהבננו את הקו המנחה הזה, המימוש של הסינון הופך לטריוויאלי.
אם התחכמנו \ התעצלנו מללכת אחר ההתוויה של ה-SQL, כמעט תמיד נגלה כי לאחר מעשה, נדיר שיתאפשר לי לעצב מחדש את הטבלה (וזה כאב ראש גדול), ופעמים רבות זה לא מעשי בכלל. ובכגון דא אמרינן סוף מעשה במחשבה תחילה.
ולעניינך, הייתי משתמש בפקד יחיד של רשימה, עם אפשרות לבחירה מרובה
בה הייתי מציג את כל השנים הרלוונטיות, ומאפשר למשתמש לבחור שנים כרצונו
לאחר מכן הייתי בונה שאילתת בחירה ב-SQL דינמי, רץ בלולאה על השורות בפקד, ומשרשר את הערכים שסומנו למחרוזת.
כתבתי בקיצור, יש דוגמא נחמדה ש-@clickone פעם הכין, ראה כאן: https://tchumim.com/topic/474/סינון-מרובה/11
עריכה: מה שמופיע שם זה לא בדיוק המקרה שלך, כי שם מסננים עמודה יחידה על פי מספר ערכים נבחרים:
Where City In('ירושלים', 'צפת',....)
אבל הרעיון של בניית SQL דינמי ממומש שם. במקרה שלך הערכים הנבחרים יהיו שמות העמודות, כלומר:
SELECT Year2017, Year2023 FROM ...