当前N小于N时为空

时间:2019-02-25 11:17:15

标签: c# sql sql-server

这就是问题,我有大量的原始数据,我需要以编程方式通过C#处理和输出,为此,我使用SQL为变量赋值,这些变量在上进行迭代发票编号”

发票上必须包含最多70个字符的说明。我也只能填写5个描述字段。

一些发票超过5张,其他发票只能包含1张。

所以我有这个:

SELECT DISTINCT top 5

iw.Descript,
NEWID()
FROM staging.InputOrigin iw 


left join [Parameters].[VendorMasterUpdate] VMU ON VMU.article = iw.article AND iw.Country=vmu.origin 

WHERE post_advice='XXXXXXX' 
ORDER BY NEWID() 

我正在用它来获得“前5名”随机描述。

C#如下分配变量:

var Desc1 = table2.Rows[i]["Descript"];

现在我知道我可以参数化i以检查rowscount,如果rowscount小于5,则可以迭代until i = rowscountrowscount以上的所有内容以进行描述为NULL

但是我朝相反的方向看,这就是如何在SQL上做到这一点。

通过任何方式我都可以随机获得TOP 5,如果该值小于5,那么用NULLS填充多余的值吗?

2 个答案:

答案 0 :(得分:3)

我将使用一个计数表(在这种情况下,仅使用5个值),然后使用def my_custom_strainer(soup, attrs): for attr in attrs: print("attr:" + attr + "=" + attrs[attr]) for d in soup.findAll(['div','span']): if d.name == 'span' and 'class' in attr and attrs['class'] == "score": return d.text # meet your needs here elif d.name == 'span' and d.text == re.compile("my text"): return d.text # meet your needs here

LEFT JOIN

答案 1 :(得分:2)

一种快速而肮脏的方法是:

With CTE as
(... my query...)
, CTE2 as
(
select *
from CTE
union all
select null, null, null -- 1
union all
select null, null, null -- 2
union all
select null, null, null -- 3
union all
select null, null, null -- 4
union all
select null, null, null -- 5
)
select top 5 * 
from CTE2
order by thenewidcolumn