# Python-sql \> WindowsFunction \> RowNumber

**URL:** https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558
**Category:** Developer
**Tags:** python-sql
**Created:** [July 13, 2019, 2:34am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558 "2019-07-13T02:34:43Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![bala4901](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/fbc32d/32.png) [@bala4901](https://discuss.tryton.org/u/bala4901)
#### Post date: [July 13, 2019, 2:34am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558/1 "2019-07-13T02:34:44Z")

</div>

Hi,  
Below is the python-sql query, how to user RowNumber with WindowFunction.  
It need to use `window` as parameter. But how to define?

Please help

> query = move.join(product,  
> condition=move.product == product.id  
> ).join(template,  
> condition=product.template == template.id  
> ).join(flocation,  
> condition=move.from\_location == flocation.id  
> ).join(tlocation,  
> condition=move.to\_location == tlocation.id  
> ).join(pabean, type\_=‘LEFT’,  
> condition=move.document\_pabean == pabean.id  
> ).join(kpbc, type\_=‘LEFT’,  
> condition=pabean.kpbc == kpbc.id  
> ).select(  
> RowNumber(window=move.id).as\_(‘row\_number’),  
> move.id.as\_(‘id’),  
> move.create\_uid,  
> move.create\_date,  
> move.write\_uid,  
> move.write\_date,  
> move.shipment.as\_(‘shipment’),  
> move.state.as\_(‘state’),  
> move.effective\_date,  
> move.currency,  
> move.unit\_price,  
> move.uom,  
> move.quantity,  
> move.product,  
> move.id.as\_(‘move’),  
> template.name.as\_(‘name’),  
> product.code.as\_(‘product\_code’),  
> template.name.as\_(‘product\_name’),  
> Coalesce(pabean.id, None).as\_(‘document\_pabean’),  
> Coalesce(pabean.number, None).as\_(‘no\_pengajuan’),  
> Coalesce(pabean.no\_pendaftaran, None).as\_(‘no\_pendaftaran’),  
> Coalesce(pabean.tgl\_daftar, None).as\_(‘tgl\_pengajuan’),  
> Coalesce(pabean.tgl\_aju, None).as\_(‘tgl\_pengajuan’),  
> Coalesce(pabean.pb\_type, None).as\_(‘pb\_type’),  
> Coalesce(kpbc.code, None).as\_(‘kode\_kppbc’),  
> where=(flocation.type == ‘supplier’) | (flocation.type == ‘customer’)  
> )

Error Message for Window:

Traceback (most recent call last):  
File “/home/coder/project/env/lib/python3.6/site-packages/trytond/protocols/dispatcher.py”, line 186, in _dispatch  
result = rpc.result(meth(\*c\_args, \*\*c\_kwargs))  
File “/home/coder/project/env/lib/python3.6/site-packages/trytond/model/modelsql.py”, line 1243, in search  
tables, expression = cls.search\_domain(domain)  
File “/home/coder/project/env/lib/python3.6/site-packages/trytond/model/modelsql.py”, line 1409, in search\_domain  
tables[None] = (cls. **table** (), None)  
File “/home/coder/project/env/lib/python3.6/site-packages/trytond/model/modelsql.py”, line 199, in **table**  
return cls.table\_query()  
File “/home/coder/project/env/lib/python3.6/site-packages/trytond/modules/plb\_laporan/lap\_pemasukan\_barang.py”, line 182, in table\_query  
RowNumber(WindowFunction(window=move.id)).as_(‘row\_number’),  
File “/home/coder/project/env/lib/python3.6/site-packages/sql/functions.py”, line 497, in **init**  
self.window = kwargs[‘window’]  
File “/home/coder/project/env/lib/python3.6/site-packages/sql/functions.py”, line 518, in window  
assert isinstance(value, Window)  
AssertionError

---

<div class="post-metadata">

### Author: ![sergyo](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/sergyo/32/181_2.png) [@sergyo](https://discuss.tryton.org/u/sergyo)
#### Post date: [July 13, 2019, 6:51am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558/2 "2019-07-13T06:51:54Z")

</div>

You must use a Window object into RowNumber:

```
from sql import Window
...
RowNumber(window=Window([])).as_('row_number')

```

---

<div class="post-metadata">

### Author: ![bala4901](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/b/fbc32d/32.png) [@bala4901](https://discuss.tryton.org/u/bala4901)
#### Post date: [July 13, 2019, 8:27am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558/3 "2019-07-13T08:27:01Z")

</div>

Normally row\_number over [column\_name].

Where to put the Column Name in “Window()”?

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [July 13, 2019, 8:50am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558/4 "2019-07-13T08:50:29Z")

</div>

Check the function with window test: [https://hg.tryton.org/python-sql/file/tip/sql/tests/test\_functions.py#l147](https://hg.tryton.org/python-sql/file/tip/sql/tests/test_functions.py#l147)

> [@bala4901](#):
>
> Normally row\_number over [column\_name].
> 
> Where to put the Column Name in “Window()”?

What come after the OVER is not a column name but a partition. python-sql creates always an alias WINDOW which contains the PARTITION definition.  
If you want to partition over the `move.id`, it will be:

```
RowNumber(window=Window([move.id])).as_('row_number')

```

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [August 12, 2019, 8:50am UTC](https://discuss.tryton.org/t/python-sql-windowsfunction-rownumber/1558/5 "2019-08-12T08:50:38Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
