SQL 使用一个 table 中的行数据从另一个 table 中的特定列中选择数据

SQL Using row data from one table to choose data from a specific column in a different table

我有一个 table 的行数据与另一个 table 中的列名相匹配:

Items:  
ProdName    ProdNum  Quality  Type   Price
Teddy Bear   123      Low      Toy    5
Airplane     234      High     Toy    20
Monopoly     345      Mid      Game   15
Chess        456      High     Game   20
Tax Bracket:
Type  Low  Mid  High
Toy   .05  .07  .1
Game  .06  .09  .11

我想在项目 table 中添加一列,其中 Total_Price 是基于项目类型和项目等级的 priceX(1+tax) 以将其作为最终 table

ProdName .... Price Total_Price
Teddy Bear    5     5.25
Airplane      20    22
Monopoly      15    16.35
Chess         20    22.2

我该怎么做?

更新

我犯了一个错误,后者 table 是折扣而不是税,不管怎样这是我的代码,但我在 SELECT 子句上遇到语法错误:

创建函数dbo.Net_Price_Calc(@quality nvarchar(50), @type nvarchar(50), @Price DECIMAL)
Returns 十进制
作为
    Select 当@quality= 'Low' 那么 (1-t.low)*price 的情况
              当@quality= 'Mid' 然后 (1-t.mid)*price
              当@quality = 'High' 然后 (1-t.high)*price
              结尾
从税 t
其中类型 = t.type
     ;
     改变 table 项
     添加 Net_Price 为 dbo.Net_Price_Calc(质量、类型、价格)
     ;

错误:消息 156,级别 15,状态 1,程序 Net_Price_Calc,第 4 行 关键字 'Select'.

附近的语法不正确

使用 joincase 语句:

select i.*,
       ((case when Quality = 'Low' then t.low
              when Quality = 'Mid' then t.mid
              when Quality = 'High' then t.high
         end) + 1) * Price as TotalPrice
from items i left join
     taxes t
     on i.type = t.type;

I want to add a column to the Items table with the Total_Price

这里你需要的是Computed Column。但是,您是从多个表中绘制的,因此需要定义一个函数。

CREATE FUNCTION dbo.Total_Price_Calc(NVARCHAR(50) @Quality, NVARCHAR(50) @Type, DECIMAL @Price)
RETURNS DECIMAL
AS 
   SELECT 
       CASE WHEN @Type = 'Low' 
       //Etc, see Gordon Linoffs reply
   FROM Tax
   WHERE Type = @Type

然后是这样的:

ALTER TABLE dbo.Items
   ADD Total_Price AS dbo.Total_Price_Calc(QualityValue, TypeValue, PriceValue)

请注意,这只是粗略的,并不是最快的。

或者您的意思是您想要创建一个在末尾计算列的查询?