Van egy lekérdezésem, amely feltételrendszer alapján gyűjt információkat. Alapvetően azt szeretném tudni, hogy egy hely 50 dollárt meghaladó összeget fizetett-e ki a napra VAGY a megjegyzés szakaszban szerepel a "szűrő" szó ...
A lekérdezésem a következő:
SELECT Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM Paid_Out_Tb
WHERE (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0,
GETDATE()), 0)) AND (Paid_Out_Amount > 50) OR
(Paid_Out_Comment LIKE N'%' + 'Filter' + '%')
A probléma az, hogy 460 eredményt ad vissza, és csak 2-t adhat vissza.
Minden válasz
A Paid_Out_Amoutn és Paid_Out_Comment feltételeket egy második zárójelkészletbe kell csomagolnia:
Ez valóban attól függ, mire használja az OR-t. A Paid_Out_Amount értéke nagyobb, mint 50, vagy a Paid_Out_Amount értéke N% Filter%. Adjon néhány zárójelet a záradékhoz
Úgy tűnik, hogy hiányzik egy zárójelkészlet:
Meg kell néznie azt a LIKE parancsot is - frissítette a kódot, hogy az összes megjegyzést kisbetűvé állítsa, és keresse meg a szószűrőt.
Nézze meg a Paid_Out_Datetime csekk BETWEEN parancsát is
AND
elsőbbséget élvezOR
. Csoportosítani kell a feltételeit, ha ellenőrizni szeretné az elsőbbséget. Próbáld ezt:Csatoltam egy csomó javaslatodat, és kijöttem a fentiekkel. Ez működik. Köszönöm!
Próbálja ki a következő lekérdezéssel:
zárójelbe kell foglalnia a where záradék első részét („OR” -ig).
Leave a Reply