【发布时间】:2022-01-02 21:41:09
【问题描述】:
以下查询可以正常返回数据:
SELECT DISTINCT
CONVERT(varchar, b.bookindt, 101) AS [book-in date],
b.bookinno AS [book-in no.],
dbo.fn_getoffensedesc(o.offenseid, o.probviolation,
(select offense from trdcode61
where code61id = o.code61id), o.goc) AS offensedescription,
o.PrimaryOffense AS [Primary Offense],
trd.l_d AS [offense l/d],
p.firstname AS [first name],
p.lastname AS [last name]
FROM
tblpeople p
LEFT OUTER JOIN
tbloffense o (NOLOCK) ON o.personid = p.personid
LEFT OUTER JOIN
tblbookin b (NOLOCK) ON b.bookinid = o.bookinid
LEFT OUTER JOIN
trdcode61 trd (NOLOCK) ON trd.code61id = o.code61id
WHERE
dbo.fn_isinjailbybookinid(b.bookinid) = 1
-- AND b.bookinno='21042173'
AND (trd.l_d LIKE 'F%' OR trd.l_d LIKE 'M%')
ORDER BY
p.lastname, p.firstname
为了更清楚,这里是单个“bookinno”的结果截图:
我需要查询方面的帮助,它会查看“预订号”。列并且如果“Offense l/d”列包含(trd.l_d like 'F%' AND trd.l_d like 'M%'),则返回该“预订编号”。结果。
当我尝试使用 AND 运行时,结果为零。
我确实有“预订号”。只有“F%”或只有“M%”。
不胜感激。
问候, 耶
【问题讨论】:
-
停止使用nolock 溅出您的代码。但是,如果您这样做并了解风险,至少使用当前语法,而不是不推荐使用的语法。
-
where b.bookinno='21042173' and (trd.l_d like 'F%' or trd.l_d like 'M%')对我来说你的查询看起来不错。我怀疑这不起作用dbo.fn_isinjailbybookinid(b.bookinid) = 1 -
@SMor,nolock 的最新语法是什么?
-
使用没有聚合的 GROUP BY 有难闻的气味。但也许 trd.l_d 列不包含您假设的内容。将该列转换为 varbinary(20) 以查看它实际包含的内容。
-
如果您“必须”拥有
GROUP BY,请改用DISTINCT;当你没有聚合时,分组是没有意义的。
标签: sql sql-server group-by sql-server-2012