请帮我在sql中为下面提到的表构建一个查询

时间:2014-02-26 10:44:41

标签: sql ms-access

我有一个表名conversion,我有下面提到的这些列,我希望将'dimension'值的长度\宽度行元素l * w相乘,并将它们显示在另一个新表中

如果ms访问中的相同逻辑发生任何变化,请告诉我

可能它很简单,但我不知道确切的查询来解决等待你的解决方案的问题

ID  area    length/width    dimensions   **new column(L*W) here** 
1   1           l            3                    3*5=15 
2   1           w            5
3   2           l            4
4   2           w            8
5   3           l            6
6   3           w            10
7   4           l            12
8   4           w            13
9   4           W            10 

等待你的回复

2 个答案:

答案 0 :(得分:0)

试试这个

select *,
dimensions*(lead(dimensions) over(order by id)) product
from table1;

或者,如果你想要一组区域,那么

select *,
case when length_width='l' and (lead(length_width) over(order by id))='w'
then dimensions*(lead(dimensions) over(order by id))
else 0
end as product
from table1;

fiddle

答案 1 :(得分:0)

你可以查询表两次:一次是长度,一次是宽度,然后按区域连接并乘以值:

select length.area, length.dimension * width.dimension 
from 
  (select area, dimension from conversion where lenwidth = 'l') length
inner join 
  (select area, dimension from conversion where lenwidth = 'w') width
    on length.area = width.area;

两个评论:

  1. 我认为这是一个错字,你有4个区域的两个宽度条目?否则,您必须决定在上面的select语句中采用哪个值。
  2. 保留旧表并有一个包含结果的新表不是一个好主意。如果更改值怎么办?您必须记住每次都相应地更改结果。所以要么抛弃旧表,要么使用视图而不是新表。