查询以查找列结果集

时间:2017-09-02 22:21:07

标签: sql-server

我有两列SERIAL_NO,在DETAILSTBL中构建,当我运行以下查询时,我得到以下结果集

select SERIAL_NO,BUILD from DETAILSTBL where SERIAL_NO like 'CCB1X1250AD%' and 
BUILD < 'AJ' and BUILD!=''

enter image description here

如果我将SERIAL_NO从JS传递到后端作为CCB1X1250AE,那么我应该能够检索所有比CCB1X1250AE更小的记录,即CCB1X1250AD CCB1X1250AA CCB1X1250AB CCB1X1250AC,我尝试编写内部查询但无法获取记录,感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

如果我理解你,你想要这个:

 select SERIAL_NO,BUILD from DETAILSTBL where SERIAL_NO like 'CCB1X1250A%' and BUILD < 'AJ' and BUILD!='' and SERIAL_NO < 'CCB1X1250AD'

答案 1 :(得分:0)

这将选择除serial_no的最后两个字符之外的所有字符:

SELECT substring(serial_no, 0, len(serial_no) -1) as a from detailstbl

答案 2 :(得分:0)

您可以使用ROW_NUMBER()根据SERIAL_NO列为BUILD列提供行号,然后与数字列进行比较。

with TMP_DETAILSTBL
as 
(
    select serial_no, build, ROW_NUMBER() OVER(PARTITION BY LEFT(SERIAL_NO,9) ORDER BY BUILD) ROW_NO from DETAILSTBL
)
select serial_no, build from TMP_DETAILSTBL
where row_no < (select row_no from TMP_DETAILSTBL where build = 'AE')

这将使序列号的o / p小于AE。