ID |val1 | val2 | val3 | val4| val5| val6
1 NULL NULL a b NULL NULL
2 NULL NULL NULL b c d
对于这两个记录,我想提取第二个和第三个非空值。预期结果:
ID | 1st | 2nd | 3rd
1. a b NULL
2. b c d
让我重新表述一下这个问题,因为这是我正在处理的数据的原始格式。我想找到第n个非空值会更容易有3个商店。每家商店最多销售6种产品。每件产品可获得1星到6星的奖励。
车间id |产品id |评级
1 | a | 2个
1 | b | 6个
2 | a | 5个
2 | b | 6个
2 | c | 1个
2 | d | 2个
3 | a | 3个
我想根据评级对每种产品进行排名。预期结果是:
车间id |产品id |评级|等级
1 | a | 2 | 2
1 | b | 6 | 1
2 | a | 5 | 2个
2 | b | 6 | 1个
2 | c | 1 | 4个
2 | d | 2 | 3
3 | a | 3 | 1个
我希望这是清楚的。谢谢你的帮助!
1条答案
按热度按时间7kqas0il1#
扩展我的评论:
你的模式会更好
id | val_id | val
根据你的数据,你会发现:这样你就可以回答你的问题:
哪里
<TOP 5>
以及<LIMIT 5>
是可互换的,这取决于您使用的rdbms。要使数据看起来像这样更好的模式,可以使用联合查询:
您可以将其弹出到子查询中以代替
yourtable
在上面的sql中: