[英]How to query 2 SQL tables & change data with 1 query
i'm having difficulties on query 2 tables & change the data on those 2 tables. 我在查询2个表和更改这2个表上的数据时遇到困难。
Here's what i wanted to do. 这就是我想做的。
Get Table B "Max Qty" - Table A ("Actual Qty" - "WIP Qty") = Table B "Topup Qty" 获取表B“最大数量”-表A(“实际数量”-“在制品数量”)=表B“充值数量”
Then change "Signal" value into NULL or 1-4 legend base on (("Actual Qty" - "WIP Qty") / "Max Qty") x 100% 然后根据((“ Actual Qty”-“ WIP Qty”)/“ Max Qty”)x 100%将“ Signal”值更改为NULL或1-4图例
NULL = More than or equal to 60% NULL =大于或等于60%
1 = Less than or equal to 60% 1 =小于或等于60%
2 = Less than or equal to 50% 2 =小于或等于50%
3 = Less than or equal to 30% 3 =小于或等于30%
4 = Less than or equal to 0% 4 =小于或等于0%
From this: 由此:
TABLE A
- Products Actual Qty WIP QTY
- Product A 5 0
- Product B 5 0
- Product C 733 72
- Product D 532 90
- Product E 510 360
TABLE B
- MIN QTY MAX QTY TOPUP QTY SIGNAL
- 100 1000 NULL NULL
- 329 857 NULL NULL
- 393 1025 NULL NULL
- 262 683 NULL NULL
- 319 832 NULL NULL
To become like this: 要变成这样:
TABLE A
- Products Actual Qty WIP QTY
- Product A 5 0
- Product B 5 0
- Product C 733 72
- Product D 532 90
- Product E 510 360
TABLE B
- MIN QTY MAX QTY TOPUP QTY SIGNAL
- 100 1000 995 4
- 329 857 852 4
- 393 1025 220 NULL
- 262 683 61 NULL
- 319 832 680 4
I am assuming that TableB has some relation to TableA 我假设TableB与TableA有某种关系
This will not be possible if there is no way to relate between them. 如果没有办法在它们之间建立联系,这将是不可能的。
DECLARE @tableA TABLE(Products VARCHAR(50), Actual_Qty INT, WIP_Qty INT)
DECLARE @tableB TABLE(Products VARCHAR(50), Min_Qty INT, Max_Qty INT, Topup_Qty INT, Signal INT)
INSERT INTO @tableA VALUES
('Product A',5, 0),
('Product B', 5, 0),
('Product C', 733 , 72),
('Product D', 532 , 90),
('Product E', 510 , 360)
INSERT INTO @tableB VALUES
('Product A',100, 1000,995, 4),
('Product B',329, 857 ,852, 4),
('Product C',393, 1025,220, NULL),
('Product D',262, 683 ,61 , NULL),
('Product E',319, 832 ,680, 4)
SELECT A.Products,A.Actual_Qty,A.WIP_Qty,A.Actual_Qty-A.WIP_Qty Topup,'>' [ ],B.Products,B.Min_Qty,B.Max_Qty,B.Topup_Qty,B.Signal, 'now calculate > ' [ ]
, CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty SignalTest
, CASE
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty >= 60 THEN 1
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty BETWEEN 50 AND 60 THEN 2
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty BETWEEN 30 AND 50 THEN 3
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty < 30 THEN 4
END Signal
FROM @tableA A
INNER JOIN @tableB B ON B.Products = A.Products
/*Here is the update but, you can switch the tables for your tables*/
UPDATE B
SET B.Signal = (SELECT CASE
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty >= 60 THEN 1
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty BETWEEN 50 AND 60 THEN 2
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty BETWEEN 30 AND 50 THEN 3
WHEN CONVERT(MONEY,(A.Actual_Qty-A.WIP_Qty )*100)/B.Max_Qty < 30 THEN 4
END Signal)
FROM @tableA A
INNER JOIN @tableB B ON B.Products = A.Products
SELECT
*
FROM @tableB
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.