sql - Hogyan kell használni az "és" és "vagy" kifejezéseket a "Hol" záradékban

Translate

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.

This question and all comments follow the "Attribution Required."

Minden válasz

Translate

A Paid_Out_Amoutn és Paid_Out_Comment feltételeket egy második zárójelkészletbe kell csomagolnia:

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' + '%')
    )
Forrás
Translate

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

WHERE 
(
    (1 = 1)
    AND
    (2 = 2)
)
OR
( 3 = 3 )
Forrás
Translate

Úgy tűnik, hogy hiányzik egy zárójelkészlet:

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
        LOWER(Paid_Out_Comment) LIKE '%filter%'
    )

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

Forrás
Translate

ANDelsőbbséget élvezOR. Csoportosítani kell a feltételeit, ha ellenőrizni szeretné az elsőbbséget. Próbáld ezt:

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' + '%') )
Forrás
Translate
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 > 20) OR
                         (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_Comment LIKE N'%' + 'Filter' + '%')

Csatoltam egy csomó javaslatodat, és kijöttem a fentiekkel. Ez működik. Köszönöm!

Forrás
Translate

Próbálja ki a következő lekérdezéssel:

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' + '%')
Forrás
Translate

zárójelbe kell foglalnia a where záradék első részét („OR” -ig).

(
 (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' + '%')
Forrás
Leave a Reply
You must be logged in to post a answer.
A szerzőről