2017-08-11 1 views
0
@sipcount= (SELECT ISNULL(SUM(SIP.[Total]),0) FROM 
        (
         SELECT COUNT(1) AS Total FROM [dbo].[MF_tblSundaramSIPDetails] AS [mtfsd] 
          WHERE ISNULL([mtfsd].[TrxnType],'') = 'SYSTEMATIC PURCHASE' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
         UNION ALL 
         SELECT COUNT(1) AS Total FROM [dbo].[MF_tblCamsSIPDetails] AS [mtfsd] 
          WHERE ISNULL([AUT_Trntyp],'') = 'P' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
         UNION ALL 
         SELECT COUNT(1) AS Total FROM [dbo].[MF_tblFranklinSIPDetails] AS [mtfsd] 
          WHERE ISNULL([mtfsd].[isSipStp],'') = 'SIP' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
         UNION ALL 
         SELECT COUNT(1) AS Total FROM [dbo].[MF_tblKarvySIPDetails] AS [mtfsd] 
          WHERE ISNULL([mtfsd].[TrType],'') = 'SIP' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
        ) AS SIP) 

maintenant je veux vérifier si existe dans chaque Select Count (1) des déclarations comme ci-dessousCheck IF EXISTS dans le tableau interne de SQL qui contient plusieurs syndicats

@sipcount= (SELECT ISNULL(SUM(SIP.[Total]),0) FROM 
        (if exists(select 1) 
begin 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblSundaramSIPDetails] AS [mtfsd] 
           WHERE ISNULL([mtfsd].[TrxnType],'') = 'SYSTEMATIC PURCHASE' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
end 
else 
begin 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblSundaramSIPDetails1] AS [mtfsd] 
           WHERE ISNULL([mtfsd].[TrxnType],'') = 'SYSTEMATIC PURCHASE' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',')) 
end 
         ) AS SIP)       
+0

Vous pouvez utiliser AND EXISTS dans les requêtes elles-mêmes. – Amit

+0

s'il vous plaît pouvez-vous donner un exemple –

Répondre

0

Quelque chose comme ça pour vous. Vérifiez l'utilisation de AND EXISTS. Vous devrez peut-être le formater et une parenthèse peut être ici et là, mais c'est ainsi que fonctionne AND EXISTS.

Select @sipcount= (SELECT ISNULL(SUM(SIP.[Total]),0) FROM ( 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblSundaramSIPDetails] AS [mtfsd] WHERE ISNULL([mtfsd].[TrxnType],'') = 'SYSTEMATIC PURCHASE' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',') 
AND EXISTS (SELECT 1 FROM TableName WHERE Column_Value = 'STR') 
) UNION ALL 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblCamsSIPDetails] AS [mtfsd] WHERE ISNULL([AUT_Trntyp],'') = 'P' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',') AND EXISTS 
(SELECT 1 FROM TableName WHERE Column_Value = 'STR')) 
UNION ALL 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblFranklinSIPDetails] AS [mtfsd] WHERE ISNULL([mtfsd].[isSipStp],'') = 'SIP' AND [mtfsd].[ClientFK] IN (SELECT NewspaperFK FROM dbo.Split(@ClientPK,',') 
AND EXISTS (SELECT 1 FROM TableName WHERE Column_Value = 'STR')) 
UNION ALL 
SELECT COUNT(1) AS Total FROM [dbo].[MF_tblKarvySIPDetails] AS [mtfsd] WHERE ISNULL([mtfsd].[TrType],'') = 'SIP' AND [mtfsd].[ClientFK] IN 
(SELECT NewspaperFK FROM dbo.Split(@ClientPK,',') 
AND EXISTS (SELECT 1 FROM TableName WHERE Column_Value = 'STR') 
)) AS SIP)