2017-06-05 26 views
0

我需要快速地改写现有的SQL Server过程。这是一个黑客工作,但需要一定。SQL查询select中的列表其中field = value和otherfield = othervalue

我需要以下返回的优惠券代码和发票号码,而不是仅仅一排,其中注释是数据的列表(在WHERE子句中):

SELECT TOP 10   
    IH.INH_Voucher AS [ID], IH.COY_ID AS COY_ID, 
    IH.INH_DateSupInv AS ORD_UpdatedOn, 
    V.VES_ID, V.VES_IMOnumber, IH.INH_Order, 
    IH.INH_ID AS ORD_ID, IH.INH_INDID      
FROM   
    InvoiceHDR IH (NOLOCK)  
INNER JOIN 
    VESSACCOMP VA ON IH.COY_ID = VA.COY_ID 
INNER JOIN 
    Vessel V ON VA.VES_ID = V.VES_ID     
WHERE 
    v.VSS_ID IN ('01') AND 
    (IH.INH_Status >= 20 AND IH.INH_Status <= 40) AND 
    --IH.INH_Voucher = '170CH' AND IH.INH_SupInv = '1532' NEED LIST 
    IH.INH_INDID IS NOT NULL 

所以我需要

Voucher = '1700CH' AND SupInv = '1235' AND 
Voucher = '180CH' AND SupInv = '1111' AND 

等等很多匹配VoucherCodesInvoiceCodes

我希望这是明确的?

谢谢。

+0

你是否有matchng券+代码列表?或者你有他们存储在表中? – Whencesoever

+0

嗨,不,他们都来自Excel工作表中的值 – Martin

+0

所以存储过程应该从特定位置的Excel文件中取对数,使用它们并在最后选择你当前的查询选择的内容,但对于所有对? – Whencesoever

回答

0

您可以在以下WHERE子句应用于查询:::

WHERE 
    v.VSS_ID IN ('01') AND 
    (IH.INH_Status BETWEEN 20 AND 40) AND 
    ((IH.INH_Voucher = '170CH' AND IH.INH_SupInv = '1532') 
    OR (IH.INH_Voucher = '180CH' AND IH.INH_SupInv = '1111'))   
    AND IH.INH_INDID IS NOT NULL 
+0

嗨,我已经试过,但它没有工作。我想我需要这样的东西:SELECT * FROM INVOICEHDR WHERE(INH_Voucher,INH_SupInv)IN(('1706CH','I8725'),('1700CH','CAT-20174')) – Martin

+0

@Martin,在问题中你说你想要一个List。也许如果你从查询中删除“TOP 10”,然后尝试,你可能会得到一个列表(超过10条记录) – PrinceKayastha