這個問題在這里已經有了答案: 一起使用 SQL AND OR 不起作用 2 個答案 昨天關門。
在 Linux 上使用 DBeaver 中的 SQL Server。當我將此行放入SELECT陳述句中時,它可以完美運行并創建一個新列,其中 Y 和 N 是正確的。
CASE
WHEN t.event_date BETWEEN p.BaseStart AND p.BaseEnd
THEN 'Y'
ELSE 'N'
END AS varnew
然而,我真正想做的只是只保留和之間的行(t.event_date都在單獨的列中)。它可能與資料格式有關,因為每個日期都以 YYYY-MM-DD 格式顯示。p.BaseStartp.BaseEnd
我也試過
WHERE
.... several conditions ...
AND
t.event_date BETWEEN p.BaseStart AND p.BaseEnd
但它根本不選擇,只是將滿足 WHERE 陳述句中其他條件的所有行都帶進來。我嘗試使用 CAST、CONVERT 和其他方法將日期轉換為正確的格式,但這也不起作用。所以我有幾個問題:
相同的代碼怎么可能在 SELECT 中起作用,但在 WHERE 陳述句中卻不起作用?
是否可以在 SELECT 陳述句中進行選擇并僅保留與條件匹配的那些,我不需要任何新變數?
是否有一種簡單的方法可以解決 WHERE 陳述句中的問題,以便正確識別日期?謝謝。J。
這是我的代碼,名稱略有變化
SELECT
t.id,
COUNT(t.code) OVER(PARTITION BY t.id) AS NUMTRTS,
t.anotherid,
p.BaseStart,
p.BaseEnd,
t.code AS 'MC',
t.date AS 'MD'
--CASE WHEN t.date BETWEEN p.BaseStart AND p.BaseEnd THEN 'Y' ELSE 'N' END AS varnew
FROM
ther t
JOIN
prac p ON t.id = p.id
WHERE
t.code LIKE 'c1[1234]__'
OR
t.code LIKE 'c2[abc]__'
OR
t.code LIKE 'c3[179]__'
OR
t.code LIKE 'c4[13]__'
OR
t.code LIKE 'c5[56]__'
OR
t.code LIKE 'c[67A]___'
OR
t.code LIKE 'ck1__'
AND
t.code NOT IN ('c1D9.')
AND
t.code NOT LIKE 'c51[MN].'
AND
t.event_date BETWEEN p.BaseStart AND p.BaseEnd
ORDER BY
t.id, MedDate
uj5u.com熱心網友回復:
您需要括號來正確應用您的邏輯,例如:
where (
t.code LIKE 'c1[1234]__'
OR t.code LIKE 'c2[abc]__'
OR t.code LIKE 'c3[179]__'
OR t.code LIKE 'c4[13]__'
OR t.code LIKE 'c5[56]__'
OR t.code LIKE 'c[67A]___'
OR t.code LIKE 'ck1__'
)
AND t.code NOT IN ('c1D9.')
AND t.code NOT LIKE 'c51[MN].'
AND t.event_date BETWEEN p.BaseStart AND p.BaseEnd
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430071.html
