Table A
ID QTY UP
1 1 1.5
1 100 1.25
2 1 2.5
2 100 2.25
Table B
ID QTY UP
1 56 1.25
1 100 1.25
2 1 2.5
2 123 2.5
請問如何實作查詢出來的效果是
ID QTY UP
1 56 1.25
2 123 2.5
這是一個業務應用問題,不用在意ID為什么會重復,可以當做一個SKU,對應的不同售價規則;
表A是定義規則的地方,表B是業務錄入的地方,當在表B錄入業務資料時,會自動去對比表A的規則,為防止人為修改或其它因素出現的不匹配情況,需要就表B與表A進行一個查詢,把不符合表A規則的表B業務資料按行查詢顯示出來。還望各路大神指教,謝謝。
uj5u.com熱心網友回復:
--創建臨時表
DECLARE @TABLEA TABLE (ID INT,QTY INT ,UP DECIMAL(19,9))
INSERT INTO @TABLEA
SELECT 1,1,1.5 UNION ALL
SELECT 1,100,1.25 UNION ALL
SELECT 2,1,2.5 UNION ALL
SELECT 2,100,2.25
DECLARE @TABLEB TABLE (ID INT,QTY INT ,UP DECIMAL(19,9))
INSERT INTO @TABLEB
SELECT 1,56,1.25 UNION ALL
SELECT 1,100,1.25 UNION ALL
SELECT 2,1,2.5 UNION ALL
SELECT 2,123,2.5
--查詢表B不符合表A的資料
SELECT * FROM @TABLEB AS B
WHERE NOT EXISTS(SELECT 1 FROM @TABLEA AS A WHERE B.ID=A.ID AND B.QTY=A.QTY AND B.UP=A.UP)
uj5u.com熱心網友回復:
ID不重復的話可以這樣,留個mark學習其他大佬的方法select * from tableb where id not in(
select b.id from tablea a inner join tableb b on a.qty=b.qty and a.up=b.up)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/36312.html
標籤:應用實例
上一篇:Sqlserver問題,請教大神
下一篇:有人做過PB的醫保API介面嗎?
