我已经创建了一个视图,该视图为每条记录返回一个行号我的要求是结果必须始终有第1行,增加1.只要从给定记录中选择了所有行项目,此工作就可以正常工作。但是,如果只选择记录中的部分行项目,则行所选订单项可以或可以不具有一个行号= 1下面是我的代码的示例:SQL查询如何确保ROW_NUMBER()OVER(PARTITION BY ...在结果集中总是有ROW_NUMBER ='1'
SELECT a.PATID,
a.PATID + '_' + a.BATCHID + '_' + a.UNIQUEID AS RECORD_ID,
ROW_NUMBER() OVER(PARTITION_BY b.BATCHID, b.UNIQUIEID, b.LINE_ID) AS LN_NBR,
a.ADMIT_DT,
b.REV,
b.SERVICE_DATE AS DOS
FROM HDR_TBL a
LEFT JOIN LINE_ITEM_TBL b
WHERE b.PD_STATUS = 'P'
这里是结果的一个例子:
PATID |RECORD_ID |LN_NBR|ADMIT_DT |REV |DOS |
-----|-----------|------|--------|----|--------|
21548|017_U50_011|1 |20170721|0124|20170721|
21548|017_U50_011|2 |20170722|0214|20170722|
21548|017-U50_011|3 |20170723|0124|20170723|
51245|017_U27_003|3 |20170701|0124|20170701|
51245|017_U27_003|4 |20170702|0124|20170702|
正如你所看到的最后2条记录有LN_NBR = 3和4;我需要用LN_NBR = 1和2生成最后2条记录。
任何人都有一个想法,我可以如何强制这种情况发生?
谢谢!
我可以想到没有数据库,您的查询将运行。 –
'ROW_NUMBER()'在'OVER'子句中需要'ORDER BY' ... –
也是'LEFT JOIN'需要'ON'条件 –