[SQL] MySQL은 GREATEST와 유사한 SQL Server 2008의 기능?
SQLMySQL은 GREATEST와 유사한 SQL Server 2008의 기능?
여러 개의 컬럼의 최대 값을 찾고 싶어요.
MySQL은 GREATEST 기능을 지원하지만 SQL Server는하지 않습니다.
어떤 기능 2008 SQL 서버에서이 유사 있습니까?
해결법
-
==============================
1.당신이 그에서 최대를 선택 파생 테이블로 관심의 열을 보내고 하위 쿼리 UNION ALL를 추가 할 수 있도록 호 그러나 서브 쿼리는 외부 쿼리에서 열을 액세스 할 수 있습니다.
당신이 그에서 최대를 선택 파생 테이블로 관심의 열을 보내고 하위 쿼리 UNION ALL를 추가 할 수 있도록 호 그러나 서브 쿼리는 외부 쿼리에서 열을 액세스 할 수 있습니다.
SELECT *, (SELECT MAX(c) FROM (SELECT number AS c UNION ALL SELECT status) T) AS GreatestNumberOrStatus FROM master..spt_values
아니면 약간 더 간결 버전 당신이 2008 년이기 때문에.
SELECT *, (SELECT MAX(c) FROM (VALUES(number),(status)) T (c)) AS Greatest FROM master..spt_values
-
==============================
2.다음과 같이이를 위해, 나는 스칼라 함수를 만들었습니다 :
다음과 같이이를 위해, 나는 스칼라 함수를 만들었습니다 :
CREATE FUNCTION [dbo].[MaxOrNull](@val1 int, @val2 int) returns int as begin if @val1 >= @val2 RETURN @val1 if @val1 < @val2 RETURN @val2 RETURN NULL end
그것은 가장 우아한 해결책과 SQL 코드 어디에서나 사용할 수 있습니다.
-
==============================
3.나는 다음과 같은 솔루션을 추천 할 것입니다 :
나는 다음과 같은 솔루션을 추천 할 것입니다 :
SELECT (CASE WHEN t.createdt < t.changedt THEN t.changedt ELSE t.created END) AS ChgDate FROM table t
-
==============================
4.대신 또는 MAX TOP를 사용해보십시오.
대신 또는 MAX TOP를 사용해보십시오.
-
==============================
5.가능한 솔루션 :
가능한 솔루션 :
Create FUNCTION [dbo].[MaxOf] ( @val1 INT =0, @val2 INT=0 , @val3 INT =0, @val4 INT =0, @val5 INT =0, @val6 INT =0, @val7 INT =0, @val8 INT =0, @val9 INT =0, @val10 INT =0, @val11 INT =0, @val12 INT =0, @val13 INT =0, @val14 INT =0, @val15 INT =0, @val16 INT =0, @val17 INT =0, @val18 INT =0, @val19 INT =0, @val20 INT =0) --OUTPUT RETURNS INT WITH SCHEMABINDING AS BEGIN DECLARE @MAX AS INT ; SET @MAX=0 IF isnull(@val1,0)> isnull(@MAX,0) SET @MAX=isnull(@val1,0) IF isnull(@val2,0)> isnull(@MAX,0) SET @MAX=isnull(@val2,0) IF isnull(@val3,0)> isnull(@MAX,0) SET @MAX=isnull(@val3,0) IF isnull(@val4,0)> isnull(@MAX,0) SET @MAX=isnull(@val4,0) IF isnull(@val5,0)> isnull(@MAX,0) SET @MAX=isnull(@val5,0) IF isnull(@val6,0)> isnull(@MAX,0) SET @MAX=isnull(@val6,0) IF isnull(@val7,0)> isnull(@MAX,0) SET @MAX=isnull(@val7,0) IF isnull(@val8,0)> isnull(@MAX,0) SET @MAX=isnull(@val8,0) IF isnull(@val9,0)> isnull(@MAX,0) SET @MAX=isnull(@val9,0) IF isnull(@val10,0)> isnull(@MAX,0) SET @MAX=isnull(@val10,0) IF isnull(@val11,0)> isnull(@MAX,0) SET @MAX=isnull(@val11,0) IF isnull(@val12,0)> isnull(@MAX,0) SET @MAX=isnull(@val12,0) IF isnull(@val13,0)> isnull(@MAX,0) SET @MAX=isnull(@val13,0) IF isnull(@val14,0)> isnull(@MAX,0) SET @MAX=isnull(@val14,0) IF isnull(@val15,0)> isnull(@MAX,0) SET @MAX=isnull(@val15,0) IF isnull(@val16,0)> isnull(@MAX,0) SET @MAX=isnull(@val16,0) IF isnull(@val17,0)> isnull(@MAX,0) SET @MAX=isnull(@val17,0) IF isnull(@val18,0)> isnull(@MAX,0) SET @MAX=isnull(@val18,0) IF isnull(@val19,0)> isnull(@MAX,0) SET @MAX=isnull(@val19,0) IF isnull(@val20,0)> isnull(@MAX,0) SET @MAX=isnull(@val20,0) RETURN @MAX ; END
그리고 통화가 될 것이다
SELECT dbo.MaxOf (2,3,4,0,0,0,0,200,8,0,0,0,0,0,0,0,0,0,0,0)
from https://stackoverflow.com/questions/4725823/function-in-sql-server-2008-similar-to-greatest-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] DB2 SQL에서 정규 표현식 (0) | 2020.04.21 |
---|---|
[SQL] MySQL의 트리거 저장 트리거는 이미 저장 트리거를 호출 문에 의해 사용됩니다 (0) | 2020.04.21 |
[SQL] 하나 개의 테이블에 여러 계급 (0) | 2020.04.21 |
[SQL] 변수 열 이름 동적 업데이트 문 (0) | 2020.04.21 |
[SQL] CROSS에 포스트 그레스 아날로그는 SQL 서버에 적용 (0) | 2020.04.21 |