1000 primeiros Números Primos com o SQL Server

Eu tenho o programa para o Primeiro que dá apenas 2 como saída. Ele deveria me dar tudo baseado no programa em java que eu escrevi.

Aqui está SQL que eu criei para números Primos. É no SQL Server. Eu quero imprimir 1000 primeiros números Primos. Pode você por favor, deixe-me saber o problema nesse código?

    DECLARE @i INT = 1
    DECLARE @j INT = 2
    DECLARE @COUNT INT
    BEGIN
    WHILE @j <= 10
        BEGIN
            SET @COUNT = 0
            WHILE @i <= @j
                BEGIN
                    BEGIN
                        IF((@j %% @i) = 0)
                            SET @COUNT += 1
                    END
                    SET @i += 1
                END
            BEGIN
                IF (@COUNT = 2)
                    PRINT @j
            END
            SET @j += 1
        END
    END
    ;

Obrigado !!!

0
2019-09-19 15:52:46
origem
3 respostas

Use condicional de agregação:

SELECT 
     ML.MemberID
    ,ML.effective_date
    ,CL.CaseID
    ,CL.CaseName
    ,CL.StartDate AS CaseCreatedDate    
    ,CONCAT(U.firstname,' ', U.lastname) AS PrimaryCaseOwner
    MIN(CONCAT(U2.firstname,' ', U2.lastname)) AS SecondaryCaseOwner1,
    CASE 
        WHEN MIN(U2.[user_id]) != MAX(U2.[user_id])
        THEN MAX(CONCAT(U2.firstname,' ', U2.lastname)) 
    END AS SecondaryCaseOwner2
FROM #MemberList ML
    INNER JOIN vw_CaseList CL 
        ON ML.member_id = CL.member_id
        AND CL.StartDate < GETDATE() 
        AND (CL.EndDate IS NULL OR CL.EndDate > GETDATE() )
    INNER JOIN Users U ON CL.primary_owner_id = U.[user_id]
    LEFT JOIN Cases_SecondaryOwners S ON CL.case_id = S.case_id
    LEFT JOIN Users U2 ON S.[user_id] = U2.[user_id] 
WHERE MemberID in = 16468
GROUP BY
     ML.MemberID
    ,ML.effective_date
    ,CL.CaseID
    ,CL.CaseName
    ,CL.StartDate AS CaseCreatedDate    
    ,U.firstname
    ,U.lastname
ORDER BY MemberName, CaseCreatedDate

Notas:

  • esta consulta faz sentido apenas de há mais de 2 secundário usuários; de outro, você vai ter o primeiro e último nomes de usuários, ordenados por ordem alfabética dos nomes completos de

  • Eu mudei a condição de WHERE cláusula de MemberID in IN (16468) para MemberID in = 16468; IN é melhor utilizado quando há vários elementos na lista.

+3
2019-09-19 16:09:42

Eu tenho exatamente o mesmo problema. @Marcos, você poderia elaborar um pouco mais de como você resolveu o problema.

+1
2019-09-19 16:11:26

Oi por Favor, tente o código abaixo,

public static void main(String[] args) { 
    String str = "246"; 
      System.out.println("All substring of abbc are:");
       for (int i = 0; i < str.length(); i++) {
       for (int j = i+1; j <= str.length(); j++) {
             if((Integer.valueOf(str.substring(i,j)) <26))
                     System.out.println(str.substring(i,j));

       }
      }

} 
+1
2019-09-19 17:20:33

Veja mais perguntas por marcas