יום טוב וברוך הבא לפורום
הדרך הכי טובה לנטר את הבעיה היא לבדוק מה בפועל הגיע לשרת ואז להגיע למקור הבעיה. אתה יכול לנטר את השאילתות שמגיעות לשרת בעזרת
SQL Server Profiler (מתאים בעיקר לגרסאות ישנות) או בעזר
SQL Server Extended Event.
בינתיים: אתה יכול לנסות להוריד מהשאילתה את כל החלקים שמזכירים את שם הטבלה פרט לחלק של ה FROM. מכיוון שאתה עובד עם טבלה בודדת בשאילתה אתה יכול פשוט לעשות שימוש בשם הטור. הבעיה קשורה לפורמט של השימוש בשם הטבלה וזה יוכל לעזור להשאיר רק
מיקום אחד פוטנציאלי. הבעיה יכולה להיות קשורה לשימוש בנקודה בשם הטבלה+טור.
הערה: כאשר שם הטור כולל סימנים מיוחדים (לא המקרה שלך) אז הפתרון הוא פשוט להכניס את השם של הטור בתוך סוגריים מרובעים.
ז"א במקום הקוד הראשון לעבוד עם הקוד השני
id in (
select tblFamiliesInSale.familyId
from tblFamiliesInSale
where
tblFamiliesInSale.seasonCode in(
select top 3 c.scode
from (
select Max(tblsales.saleDate)as m,tblSales.seasonCode as scode
from tblSales
where tblSales.saleDate < convert(datetime, '03-11-2018')
group by tblSales.seasonCode
) as c
order by c.m desc
)
and tblFamiliesInSale.fisStatus <3
group by tblFamiliesInSale.familyId
having count(tblFamiliesInSale.familyId)>2
)
id in (
select familyId
from tblFamiliesInSale
where
seasonCode in(
select top 3 c.scode
from (
select Max(tblsales.saleDate)as m,tblSales.seasonCode as scode
from tblSales
where tblSales.saleDate < convert(datetime, '03-11-2018')
group by tblSales.seasonCode
) as c
order by c.m desc
)
and fisStatus <3
group by familyId
having count(familyId)>2
)
הערה: RowFilter נועד בעקרון לתנאי קצרים ואני לא ממש בטוח כיצד הוא יתפקד עם שאילתות משנה רבות ומורכבות, וגם כך יש ו מדבלות על תווים מיוחדים...
אתה יכול לעבוד עם שאילתות מורכבות ככל שאתה רוצה בעזרת שימוש בשאילתות ישירות אשר מסננות את המידע אם צריך בעזרת EnumerableRowCollection למשל משהו כפי שמוצג במסמך הרשמי הבא בדוגמה השנייה
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/filtering-with-dataview-linq-to-dataset