簡體   English   中英

加入行數?

[英]RowNumber on join?

    TableBoxes                          TableItems
 BoxCode    BoxDesc                   ItemNo    BoxCode       ItemDesc
    X1        Freight1                   123       X1            Tomatoes
    X4        Freight2                   124       X1            Apples  
    X8        Freight3                   128       X4            Potatoes   

我只需要BoxCode = X1的結果行,輸出按ItemNo排序

BoxNumber         ItemNo               ItemDesc
   1                1                     Tomatoes
   1                2                     Apples

我可以通過在ItemNo上使用row_number()輕松獲得'ItemNo'序列。 如何從第一個表中找到包裝盒的序列號? 我目前的查詢

select 
    row_number() over(
          order by a.ItemNo
    )as ItemNo
    ,ItemDesc
from 
    TableItems a 
    inner join TableBoxes b 
        on a.BoxCode=b.BoxCode 
where
    a.BoxCode='X1'

無法弄清楚如何為BoxCode,Damien選擇序列。

這是你想要的嗎?

WITH TableBoxesRanked AS (
  SELECT
    *,
    BoxNumber = ROW_NUMBER() OVER (ORDER BY BoxCode)
  FROM TableBoxes
)
SELECT
  b.BoxNumber,
  ItemNumber = ROW_NUMBER() OVER (ORDER BY i.ItemNo),
  i.ItemDesc
FROM TableItems i
  INNER JOIN TableBoxesRanked b ON i.BoxCode = b.BoxCode
WHERE a.BoxCode = 'X1'

使用如下所示的density_rank():

SELECT DENSE_RANK() OVER(order by a.BoxCode) , row_number() over(order by a.ItemNo)as ItemNo, ItemDesc 
from #TableItems a 
inner join #TableBoxes b on a.BoxCode=b.BoxCode where a.BoxCode in ('X1','X4')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM