Cod*_*url 1 sql t-sql sql-server-2005
我有一些sql不会返回我需要的行,除非我将其指定为where子句中的条件.如果我取消注释下面注释掉的部分,它会给我我想要的行.如果我将其注释掉,那么这些行不会在我的结果集中返回.
这有意义吗?任何人都可以看到我做错了吗?谢谢.
SELECT
RTRIM(c.comp2) + '-' + l.Loc_Name,
MAX(RTRIM(g.mega_location_num) + '-' + g.mega_location_name)
FROM
mkt_share_comp c, gldm_location g, mkt_share_locs l
WHERE
RTRIM(c.comp1) = g.location_num
AND c.comp2 = l.Loc_No
AND LEN(c.comp2) = 5 AND c.is_deleted = 0 AND l.is_deleted = 0
--and g.mega_location_num = '450'
GROUP BY
RTRIM(c.comp2) + '-' + l.Loc_Name
ORDER BY
MAX(RTRIM(g.mega_location_num) + '-' + g.mega_location_name)
Run Code Online (Sandbox Code Playgroud)
这个比较:
MAX(RTRIM(g.mega_location_num) + '-' + g.mega_location_name)
Run Code Online (Sandbox Code Playgroud)
将MAX根据您正在构建的字符串值执行操作.因此,如果有任何g.mega_location_num以大于4(或4以第二个数字大于5等数字开头)的数字开头的值,那么该值将是MAX返回的值.
要开始解决这个问题,我首先会切换到Kuya 建议的ANSI连接样式.然后我会考虑包含一个适当的ROW_NUMBER()表达式来从g表中找到"真正的"最大值,并能够从该最大行检索多个列(以允许字符串构造继续)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |