Select meio estranho para fazer
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?
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
Curtidas 0
Respostas
Bruno Leandro
29/04/2012
não entendi bem, é um campo com varias datas data1,data2,data3 ou outra forma
GOSTEI 0
Deivison Melo
29/04/2012
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!!!
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!!!
GOSTEI 0
Emerson Nascimento
29/04/2012
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.
select count(distinct campo) tipos from tabela
daí você pega o conteúdo de tipos e sabe quantos tipos estão contidos na tabela.
GOSTEI 0
Jair N.
29/04/2012
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
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
GOSTEI 0