집계 함수를 사용할 때 CASE가있는 SELECT가 실패 함

민초 민 체프

다음 t-sql 쿼리가 있습니다.

DECLARE @Test TABLE(
    Points INT
    ,PointsOf INT
)
INSERT INTO @Test
VALUES (3,12),(2,12),(3,12),(11,12),(12,12),(5,12),(0,12)

DECLARE @Decimal TINYINT = 2


SELECT  
    CASE @Decimal
        WHEN 0 THEN CAST(CAST(SUM(Points) AS DECIMAL(18,0)) / NULLIF(SUM(PointsOf), 0) * 100 AS DECIMAL(18,0))
        WHEN 1 THEN CAST(CAST(SUM(Points) AS DECIMAL(18,1)) / NULLIF(SUM(PointsOf), 0) * 100 AS DECIMAL(18,1))
        WHEN 2 THEN CAST(CAST(SUM(Points) AS DECIMAL(18,2)) / NULLIF(SUM(PointsOf), 0) * 100 AS DECIMAL(18,2))
    END  AS Score
FROM @Test

변수가 @Decimals있습니다. 변수가 0이면 XX 형식으로 점수를 반환하고 1은 XX.X 형식으로, 2는 XX.XX 형식으로 반환하려면 쿼리가 필요합니다. 여기서 일어나는 일은 CASE가 여러 THEN 절을 입력한다는 것입니다. 위의 쿼리가 실행되면 올바른 결과로 44.86을 얻지 만 @Decimalsvaliable을 0으로 변경하면 결과가 44.00 인 결과가 나옵니다. 소수없이 44 만 반환한다고 가정합니다. 내가 @Decimals1 일 때 똑같은 일이 일어나고 44.9가되어야 할 때 44.90을 반환합니다.

왜 이런 일이 발생하는지 아는 사람이 있습니까?

코딩 배저

으로 jarlh가 아주 바르게 지적 경우 문은 모든 결과 유형을 유지하기 위해 가능한 가장 작은 데이터 형식이 변환됩니다. ( MSDN 문서 , 특히 반환 유형 섹션 참조)

제 관점에서 이것은 디스플레이 문제 일뿐입니다. 변수가 1로 설정 되면 표시 44.9하지 않고 표시하려고합니다 44.90(후행 0에주의) @decimal.

이를 수행하는 한 가지 방법은 varchar에 추가 캐스트를 추가하는 것입니다. 예쁘지 않고 내가 권장하는 것이 아니지만 SQL Server에서 서식 지정 및 UI 유형 작업을 고집하면 무엇을 할 수 있습니까?

DECLARE @Test TABLE(
    Points INT
    ,PointsOf INT
)
INSERT INTO @Test
VALUES (3,12),(2,12),(3,12),(11,12),(12,12),(5,12),(0,12)

DECLARE @Decimal TINYINT = 1


SELECT  
    CASE @Decimal
        WHEN 0 THEN cast(Cast(CAST(SUM(Points) AS DECIMAL(18,0)) / NULLIF(SUM(PointsOf), 0) * 100 as decimal(18,0)) as varchar(10))
        WHEN 1 THEN cast(Cast(CAST(SUM(Points) AS DECIMAL(18,1)) / NULLIF(SUM(PointsOf), 0) * 100 as decimal(18,1))as varchar(10))
        WHEN 2 THEN cast(Cast(CAST(SUM(Points) AS DECIMAL(18,2)) / NULLIF(SUM(PointsOf), 0) * 100 as decimal(18,2))as varchar(10))
    END  AS Score
FROM @Test

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

xcrun으로 패키징 할 때 이상 함 (변수를 사용할 때 공동 설계가 실패 함)

분류에서Dev

left () 함수를 사용할 때 SQL CASE가 실패합니다.

분류에서Dev

Appcelerator Studio를 사용할 때 Appcelerator 빌드가 실패 함

분류에서Dev

사용자가 필드를 편집 할 때 Javascript에 의한 양식 필드 편집이 실패 함

분류에서Dev

QString :: split 함수를 사용할 때 performace가 느려집니다.

분류에서Dev

함수를 실행할 때 AWS 계층에서 로컬로 빌드 된 편집 가능한 pip3 패키지 지정으로 전환 할 수 없음

분류에서Dev

LVM을 사용할 때 인스턴스 배포가 실패 함

분류에서Dev

Cassandra PasswordAuthenticator를 사용할 때 DSE OpsCenter 모범 사례가 실패 함

분류에서Dev

Cassandra PasswordAuthenticator를 사용할 때 DSE OpsCenter 모범 사례가 실패 함

분류에서Dev

집계 함수가있는 SQL 쿼리가 더 큰 쿼리를 실행할 때 잘못된 값을 반환하는 이유는 무엇입니까?

분류에서Dev

CircleCI 내에서 사용할 때 Mocha의 before () 함수가 실패합니다.

분류에서Dev

Angular 2 : 사용자가 편집 가능한 필드 내부를 클릭 할 때 함수 실행

분류에서Dev

메서드가 함수를 인수로 사용할 때 Mockito 확인이 실패합니다.

분류에서Dev

NaN을 포함하는 Decimal 값을 사용할 때 Numpy Max 함수가 실패합니다.

분류에서Dev

NaN을 포함하는 Decimal 값을 사용할 때 Numpy Max 함수가 실패합니다.

분류에서Dev

특수 문자를 사용할 때 Azure Search SDK가 부분 검색에 실패 함

분류에서Dev

HAProxy 수신 컨트롤러를 사용할 때 TLS 핸드 셰이크가 간헐적으로 실패 함

분류에서Dev

RPC 서버를 사용할 수 없기 때문에 UWP 백그라운드 오디오가 실패 함

분류에서Dev

데이터를 보낼 때 소켓 send () 함수가 실패 함

분류에서Dev

루트가 아닌 사용자를 사용할 때 Docker Alpine, Celery (작업자 및 비트)가 PermissionError로 실패 함

분류에서Dev

pandas 데이터 프레임의 하위 집합을 계산할 때 dask 브로드 캐스트 변수가 키 오류와 함께 실패합니다.

분류에서Dev

GROUP BY를 사용하는 여러 열과 집계 함수가있는 SQL 쿼리

분류에서Dev

modules.exports 함수를 사용할 때 Cordova 후크가 실행되지 않음

분류에서Dev

패키지에서 빌드 할 때 Data.table 집계 함수가 작동하지 않습니다.

분류에서Dev

pth를 설치할 때 econf가 실패 함

분류에서Dev

UsernamePasswordAuthenticationFilter를 추가 할 때 인증이 실패 함

분류에서Dev

집계를 사용할 때 제한을 실행하기 전에 총 레코드 수를 가져 오는 방법

분류에서Dev

"집계"를 사용자가 만든 함수와 결합

분류에서Dev

VP8을 사용하여 변환하는 예제 명령을 실행할 때 ffmpeg가 실패 함

Related 관련 기사

  1. 1

    xcrun으로 패키징 할 때 이상 함 (변수를 사용할 때 공동 설계가 실패 함)

  2. 2

    left () 함수를 사용할 때 SQL CASE가 실패합니다.

  3. 3

    Appcelerator Studio를 사용할 때 Appcelerator 빌드가 실패 함

  4. 4

    사용자가 필드를 편집 할 때 Javascript에 의한 양식 필드 편집이 실패 함

  5. 5

    QString :: split 함수를 사용할 때 performace가 느려집니다.

  6. 6

    함수를 실행할 때 AWS 계층에서 로컬로 빌드 된 편집 가능한 pip3 패키지 지정으로 전환 할 수 없음

  7. 7

    LVM을 사용할 때 인스턴스 배포가 실패 함

  8. 8

    Cassandra PasswordAuthenticator를 사용할 때 DSE OpsCenter 모범 사례가 실패 함

  9. 9

    Cassandra PasswordAuthenticator를 사용할 때 DSE OpsCenter 모범 사례가 실패 함

  10. 10

    집계 함수가있는 SQL 쿼리가 더 큰 쿼리를 실행할 때 잘못된 값을 반환하는 이유는 무엇입니까?

  11. 11

    CircleCI 내에서 사용할 때 Mocha의 before () 함수가 실패합니다.

  12. 12

    Angular 2 : 사용자가 편집 가능한 필드 내부를 클릭 할 때 함수 실행

  13. 13

    메서드가 함수를 인수로 사용할 때 Mockito 확인이 실패합니다.

  14. 14

    NaN을 포함하는 Decimal 값을 사용할 때 Numpy Max 함수가 실패합니다.

  15. 15

    NaN을 포함하는 Decimal 값을 사용할 때 Numpy Max 함수가 실패합니다.

  16. 16

    특수 문자를 사용할 때 Azure Search SDK가 부분 검색에 실패 함

  17. 17

    HAProxy 수신 컨트롤러를 사용할 때 TLS 핸드 셰이크가 간헐적으로 실패 함

  18. 18

    RPC 서버를 사용할 수 없기 때문에 UWP 백그라운드 오디오가 실패 함

  19. 19

    데이터를 보낼 때 소켓 send () 함수가 실패 함

  20. 20

    루트가 아닌 사용자를 사용할 때 Docker Alpine, Celery (작업자 및 비트)가 PermissionError로 실패 함

  21. 21

    pandas 데이터 프레임의 하위 집합을 계산할 때 dask 브로드 캐스트 변수가 키 오류와 함께 실패합니다.

  22. 22

    GROUP BY를 사용하는 여러 열과 집계 함수가있는 SQL 쿼리

  23. 23

    modules.exports 함수를 사용할 때 Cordova 후크가 실행되지 않음

  24. 24

    패키지에서 빌드 할 때 Data.table 집계 함수가 작동하지 않습니다.

  25. 25

    pth를 설치할 때 econf가 실패 함

  26. 26

    UsernamePasswordAuthenticationFilter를 추가 할 때 인증이 실패 함

  27. 27

    집계를 사용할 때 제한을 실행하기 전에 총 레코드 수를 가져 오는 방법

  28. 28

    "집계"를 사용자가 만든 함수와 결합

  29. 29

    VP8을 사용하여 변환하는 예제 명령을 실행할 때 ffmpeg가 실패 함

뜨겁다태그

보관