比较2个表和条件以查找结果

时间:2019-05-07 11:28:22

标签: sql sql-server

在比较2个表数据时,我需要一些帮助。 一个是出售物品的表格,另一个是出售唯一代码的表格。 我想使用“唯一代码”表来查找“最小和最大销售量和购买量”,以在“已售商品”表中进行搜索

售出物品表:

unique code          qty    unit_price   funit_cost
000-250-0203          1      125.0000     38.4200
000-250-0203         30       20.0000     11.9500
002 250 97 03 ATKC   20       16.0000     13.6000
00-216-1115 L+R      50       45.0000     92.4000
0004635132          200       14.0000      4.2200
002 420 120 20 OPEC   2       48.0000     17.5200
CV TO-4-695 ZUKC      2       48.0000     17.8900
002 250 97 03 ATKC   16       68.0000     68.0000
43512-0K090          28       54.0000     54.0000
69090-0K040           1       10.0000     18.0000

唯一代码表:

Unique Code
000-250-0203
000-250-0203 ATKC
0004635132 
00118-27-350 G 
002 250 97 03
002 250 97 03 ATKC
002 420 120 20
002 420 120 20 OPEC
00-214-1914R
00-216-1115 L+R
00-216-1115 L+R ROKC 

结果需要比较2个表格数据才能找到每个唯一代码的最低价格和最高价格。

需要以最低价格显示结果:

unique code          qty    unit_price   funit_cost
000-250-0203         30       20.0000     11.9500
002 250 97 03 ATKC   20       16.0000     13.6000
00-216-1115 L+R      50       45.0000     92.4000
0004635132          200       14.0000      4.2200
002 420 120 20 OPEC   2       48.0000     17.5200
CV TO-4-695 ZUKC      2       48.0000     17.8900
43512-0K090          28       54.0000     54.0000
69090-0K040           1       10.0000     18.0000

并以此为最高价格:

unique code          qty    unit_price   funit_cost
000-250-0203          1      125.0000     38.4200
00-216-1115 L+R      50       45.0000     92.4000
0004635132          200       14.0000      4.2200
002 420 120 20 OPEC   2       48.0000     17.5200
CV TO-4-695 ZUKC      2       48.0000     17.8900
002 250 97 03 ATKC   16       68.0000     68.0000
43512-0K090          28       54.0000     54.0000
69090-0K040           1       10.0000     18.0000

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

select us.*
from unitsold us
where us.price = (select max(us2.price) from unitssold us2 where us2.unique_code = us.uniquecode);

或者,如果您想保证即使没有数据,第二张表中的每一行也会出现一次,请使用outer apply

select uc.unique_code, us.*
from uniquecodes uc outer apply
     (select top (1) us.*
      from unitssold us
      where us.unique_code = uc.uniquecode
      order by us.price desc
     ) us;

当然,您可以按其他价格翻转排序顺序或max()-> min()

答案 1 :(得分:0)

这个问题尚不清楚,但是我知道您想通过唯一的代码获得两个桌子的最高和最低价格。

我了解您需要的与此类似。

RewriteEngine on 

# Don't rewrite files or directories 

RewriteCond %{REQUEST_FILENAME} -f [OR] 

RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^ - [L] 

# Rewrite everything else to index.html to allow html5 state links 

RewriteRule ^ index.html [L] 

我希望对您有帮助