2014-06-23 156 views
0

嗨,大家好,我被困在一个非常简单的问题,以下两个查询工作正常,但我想要在一个表中的查询的结果,所以将什么可能的方式加入这两个,以便他们将结合起来给一个表的结果,我试过UNION但它没有工作。诚恳告诉我解决方案。谢谢!结合两个查询并在一个表中显示结果?

Select ITEM_DETAILS.ITEM_MODEL, 
     ITEM_DETAILS.ITEM_NAME, 
     ITEM_DETAILS.ITEM_DESCRIPTION, 
     ITEM_DETAILS.VENDOR_NAME, 
     ITEM_DETAILS.INVOICE_NUM, 
     ITEMS_MASTER.QUANTITY 
     from ITEM_DETAILS 
     inner join ITEMS_MASTER 
     on ITEM_DETAILS.ITEM_MODEL=ITEMS_MASTER.ITEM_MODEL 

Select RATE=(CASE WHEN Discount IS NULL OR Discount=0 THEN RATE ELSE RATE-(RATE*(Discount/100))END),    
     AMOUNT=(CASE WHEN Discount IS NULL OR Discount=0 THEN AMOUNT ELSE AMOUNT-(AMOUNT*(Discount/100)) END) 
     from ITEM_DETAILS  
+1

什么是你当前的输出和所需的输出?你使用的是什么DBMS?当你使用'Union'时会发生什么。你为什么不选择你的第一个查询中的“Rate”值?你是否想要计算费率? – TheNorthWes

+0

表格的结构是什么 - 列和它们的数据类型是什么? –

+0

使用MS Sql Server 2012,当使用'Union'时,当前输出显示两个不同表中的值,它给了我错误,因为所有使用UNION,INTERSECT或EXCEPT操作符组合的查询在其目标列表中必须具有相同数量的表达式'〜 – CodeSniper

回答

0

如果是SQL服务器你尝试这样的事情

Select ITEM_DETAILS.ITEM_MODEL, 
     ITEM_DETAILS.ITEM_NAME, 
     ITEM_DETAILS.ITEM_DESCRIPTION, 
     ITEM_DETAILS.VENDOR_NAME, 
     ITEM_DETAILS.INVOICE_NUM, 
     ITEMS_MASTER.QUANTITY, 
     CASE WHEN ITEM_DETAILS.Discount IS NULL OR ITEM_DETAILS.Discount=0 THEN ITEM_DETAILS.RATE ELSE ITEM_DETAILS.RATE-(ITEM_DETAILS.RATE*(ITEM_DETAILS.Discount/100))END AS 'RATE', 
     CASE WHEN ITEM_DETAILS.Discount IS NULL OR ITEM_DETAILS.Discount=0 THEN ITEM_DETAILS.AMOUNT ELSE ITEM_DETAILS.AMOUNT-(ITEM_DETAILS.AMOUNT*(ITEM_DETAILS.Discount/100)) END AS 'AMOUNT' 
     from ITEM_DETAILS 
     inner join ITEMS_MASTER 
     on ITEM_DETAILS.ITEM_MODEL=ITEMS_MASTER.ITEM_MODEL 

我不知道,如果你希望所有的费率,并从ITEM_DETAILS表金额或只有那些满足连接条件

+0

是的,我想和你写的感谢Karthik Ganesan一模一样:) – CodeSniper

0

通过查看两个查询你想要一个组合的结果。在这种情况下,你不需要UNION。你只需要结合下面的列

Select ITEM_DETAILS.ITEM_MODEL, 
     ITEM_DETAILS.ITEM_NAME, 
     ITEM_DETAILS.ITEM_DESCRIPTION, 
     ITEM_DETAILS.VENDOR_NAME, 
     ITEM_DETAILS.INVOICE_NUM, 
     ITEMS_MASTER.QUANTITY, 
     RATE=(CASE WHEN ITEM_DETAILS.Discount IS NULL OR ITEM_DETAILS.Discount=0 THEN ITEM_DETAILS.RATE ELSE ITEM_DETAILS.RATE-(ITEM_DETAILS.RATE*(ITEM_DETAILS.Discount/100))END), 
     AMOUNT=(CASE WHEN ITEM_DETAILS.Discount IS NULL OR ITEM_DETAILS.Discount=0 THEN ITEM_DETAILS.AMOUNT ELSE ITEM_DETAILS.AMOUNT-(ITEM_DETAILS.AMOUNT*(ITEM_DETAILS.Discount/100)) END) 
FROM ITEM_DETAILS 
     inner join ITEMS_MASTER 
     on ITEM_DETAILS.ITEM_MODEL=ITEMS_MASTER.ITEM_MODEL 
相关问题