2016-09-08 3 views
0

Ich versuche, die Aufzeichnungen für den 7. Monat und 2016 Jahr zu bekommen, aber ich bekomme die Datensätze für andere Monate und Jahr.Kann jemand helfen?Monat Funktion arbeitet nicht mit Datetime-Feld

Abfrage:

SELECT TOP 10 glr.[Creation Date] 
    ,gle.[Posting Date] 
    ,'Carlsberg India Pvt Ltd' 
    ,gle.[User ID] 
    ,gle.[G_L Account No_] 
    ,gle.[Description] 
    ,gle.[Source Code] 
    ,sum(gle.Amount) 
    ,gle.[Dimension Set ID] 
    ,dse.[Dimension Code] 
    ,dv.[Code] 
    ,CASE 
     WHEN 'Carlsberg India Pvt Ltd' = 'Carlsberg India Pvt Ltd' 
      THEN 1 
     WHEN 'Carlsberg India Pvt Ltd' = 'Kool Breweries' 
      THEN 2 
     WHEN 'Carlsberg India Pvt Ltd' = 'Parag Breweries' 
      THEN 3 
     ELSE 0 
     END 
    ,gle.[Entry No_] 
FROM [INDEL-NVDVCBI02].[VM_CIPL_9Aug_2016_NAV2013R2].dbo.[Carlsberg India Pvt Ltd_$G_L Entry] gle WITH (NOLOCK) 
INNER JOIN [INDEL-NVDVCBI02].[VM_CIPL_9Aug_2016_NAV2013R2].dbo.[Carlsberg India Pvt Ltd_$G_L Register] glr WITH (NOLOCK) ON gle.[Entry No_] = glr.[No_] 
INNER JOIN [INDEL-NVDVCBI02].[VM_CIPL_9Aug_2016_NAV2013R2].dbo.[Carlsberg India Pvt Ltd_$Dimension Set Entry] dse WITH (NOLOCK) ON gle.[Dimension Set ID] = dse.[Dimension Set ID] 
INNER JOIN [INDEL-NVDVCBI02].[VM_CIPL_9Aug_2016_NAV2013R2].dbo.[Carlsberg India Pvt Ltd_$Dimension Value] dv WITH (NOLOCK) ON dv.[Dimension Code] = dse.[Dimension Code] 
WHERE 
    month(gle.[Posting Date]) = cast(7 AS INT) 
    AND year([Posting Date]) = cast(2016 AS INT) 
    AND dse.[Dimension Code] = 'BRAND' 
    OR dse.[Dimension Code] = 'COSTCENTER' 
    OR dse.[Dimension Code] = 'SKU' 
    OR dse.[Dimension Code] = 'IC' 
    OR dse.[Dimension Code] = 'REGIONS' 
+4

'oder' hat eine niedrigere Priorität als' und'. Es wäre einfacher, 'dse. [Dimensionscode] in ('BRAND', 'COSTCENTER', 'SKU', 'IC', 'REGIONEN') zu schreiben' '. – Phylogenesis

Antwort

1

ändern WHERE Klausel wie folgt aus:

WHERE 
month(gle.[Posting Date]) = cast(7 AS INT) 
AND year([Posting Date]) = cast(2016 AS INT) 
AND (dse.[Dimension Code] = 'BRAND' 
OR dse.[Dimension Code] = 'COSTCENTER' 
OR dse.[Dimension Code] = 'SKU' 
OR dse.[Dimension Code] = 'IC' 
OR dse.[Dimension Code] = 'REGIONS') 

Das OR Stichwort sonst dazu führen, dass entweder month 7, year ist 2016 und [Dimension Code] ist 'Marke' oder[Dimension Code] ist einer der folgenden Werte: 'COSTCENTER', 'SKU', 'IC', 'REGIONS'.

Da Sie liefern bereits die Liste der möglichen Werte in dem Abfrage können Sie auch schreiben folgendes:

WHERE 
month(gle.[Posting Date]) = cast(7 AS INT) 
AND year([Posting Date]) = cast(2016 AS INT) 
AND dse.[Dimension Code] IN ('BRAND','COSTCENTER','SKU','IC','REGIONS') 

Dadurch werden die gleichen Ergebnisse wie die OR Aussagen nach oben ziehen.

Verwandte Themen