Select meio estranho para fazer

29/04/2012

0

Tenho uma tabela com 800 linhas. Serão inseridas mais 5.000 nela. Tenho um campo que guarda um registro assim: YYYYMM. Eu gostaria de fazer um select, que me trouxesse um valor tipo valor = 1, para todos os registros assim:
201104. Se houver registros do tipo:
201104 e 201103, ele traz o valor = 2. Se houver
201104 ,201103,201102,201101, aí ele traz o valor = 4 e assim sucessivamente. Como eu faço isso na query?
Pjava

Pjava

Responder

Posts

30/04/2012

Bruno Leandro

não entendi bem, é um campo com varias datas data1,data2,data3 ou outra forma
Responder

30/04/2012

Deivison Melo

Utilize o comando: CASE

Exemplo:

SELECT au_fname, au_lname,
CASE state
WHEN CA THEN California
WHEN KS THEN Kansas
WHEN TN THEN Tennessee
WHEN OR THEN Oregon
WHEN MI THEN Michigan
WHEN IN THEN Indiana
WHEN MD THEN Maryland
WHEN UT THEN Utah
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname

Espero ter ajudado!!!


Responder

30/04/2012

Emerson Nascimento

deve ser algo assim

select count(distinct campo) tipos from tabela

daí você pega o conteúdo de tipos e sabe quantos tipos estão contidos na tabela.
Responder

03/05/2012

Jair N.

CREATE FUNCTION TO_CHAR(@Imput SQL_VARIANT, @Format VARCHAR(55))
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @Result VARCHAR(255)

SET @Format = UPPER(@Format)

IF (ISDATE(CAST(@Imput AS VARCHAR)) = 1)
BEGIN -- 00 0 Nihill
IF (@Format = MM/DD/YYYY)
SET @Result = CONVERT(CHAR(10), @Imput, 101)
ELSE -- 02 102 ANSI
IF (@Format = YY.MM.DD )
SET @Result = CONVERT(CHAR(08), @Imput, 102)
ELSE -- 03 103 British/French
IF (@Format = DD/MM/YYYY )
SET @Result = CONVERT(CHAR(10), @Imput, 103)
ELSE -- 04 104 German
IF (@Format = DD.MM.YY )
SET @Result = CONVERT(CHAR(08), @Imput, 104)
ELSE -- 05 105 Italian
IF (@Format = DD-MM-YY )
SET @Result = CONVERT(CHAR(08), @Imput, 105)
ELSE -- 08 108 Hour Minute Seg
IF (@Format = HH:MI:SS )
OR (@Format = HH:MM:SS )
SET @Result = CONVERT(CHAR(08), @Imput, 108)
ELSE -- 10 110 USA
IF (@Format = MM-DD-YY )
SET @Result = CONVERT(CHAR(08), @Imput, 110)
ELSE -- 11 111 JAPAN
IF (@Format = YY/MM/DD )
SET @Result = CONVERT(CHAR(08), @Imput, 111)
ELSE -- 12 112 ISO YYMMDD
IF (@Format = YYYYMMDD )
SET @Result = CONVERT(CHAR(08), @Imput, 112)
ELSE -- 14 114 ODBC
IF (@Format = HH:MI:SS:MMM)
OR (@Format = HH:MM:SS:MMM)
SET @Result = CONVERT(CHAR(12), @Imput, 114)
ELSE -- 20 120 ODBC canonical
IF (@Format = YYYY-MM-DD HH:MI:SS)
OR (@Format = YYYY-MM-DD HH:MM:SS)
SET @Result = CONVERT(CHAR(20), @Imput, 120)
ELSE -- 21 121 ODBC canonical (with milliseconds)
IF (@Format = YYYY-MM-DD HH:MI:SS.MMM)
OR (@Format = YYYY-MM-DD HH:MM:SS.MMM)
SET @Result = CONVERT(CHAR(24), @Imput, 121)
ELSE --XX 0 Default
SET @Result = CONVERT(CHAR(10), @Imput, 120)
END
ELSE
IF (ISNUMERIC(CAST(@Imput AS VARCHAR)) = 1)
BEGIN
IF (@Format = )
SET @Result = CONVERT(VARCHAR(255), @Imput)
ELSE
SET @Result = LTRIM(STR(CAST(@Imput AS FLOAT), 255, LEN(@Format) - CHARINDEX(., @Format)))
END

RETURN @Result

END
GO
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar