2016-08-29 4 views
-4
SELECT distinct 
    (Client_Name), 
    AMC_Expiry as date, 
    Dealer_Name, 
    Location, 
    Product_Type, Product_Name, 
    Quantity, 
    Install_Date, Warranty_Expiry, AMC_Expiry, 
    mail_sent, 
    billing_by, callhandled_by 
FROM 
    amc 
WHERE 
    (datediff(day, cast(convert(datetime, AMC_Expiry, 103) as datetime), 
        cast(convert(datetime, GETDATE(), 103) as datetime)) > '-30' 
    and datediff(day, cast(convert(datetime, AMC_Expiry, 103) as datetime), 
         cast(convert(datetime, GETDATE(), 103) as datetime)) < 1)  
    and mail_sent = 'N' 
    or (datediff(day, cast(convert(datetime, Warranty_Expiry, 103) as datetime), 
         cast(convert(datetime, GETDATE(), 103) as datetime)) > '-30' 
    and datediff(day, cast(convert(datetime, Warranty_Expiry, 103) as datetime), 
         cast(convert(datetime, GETDATE(), 103) as datetime)) < 1) 
    and mail_sent = 'N' 
+0

質問は... ???日付として – gofr1

答えて

2

これはコメントには長すぎます。

まず、select distinctを誤解しているようです。 DISTINCTではなく、の関数です。 すべて列に適用される条項の一部です。あなたは、datetime値を取るdatetimeに変換し、それがdatetimeに再変換することになるのはなぜ

cast(convert(datetime,GETDATE(),103) as datetime)) 

第二に、あなたは次のように不条理なことをやっています。

さらに、WHERE句にカンマがありますが意味がありません。そして、あなたは一重引用符で整数定数を持っています。

あなたの質問には、あなたが言及したものよりも多くの問題があります。

+0

、(CLIENT_NAME)別個を選択 AMC_Expiry、 Dealer_Name、 場所、 PRODUCT_TYPE、 PRODUCT_NAME、 数量、 INSTALL_DATE、 Warranty_Expiry、 AMC_Expiry、 mail_sent、 billing_by、それAMC FROM callhandled_by が実行されていますその後、それが範囲外のインデックスになると私はdatetimeにvarcharを変換している –

関連する問題