database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4440 게시물 읽기
No. 4440
sum()과 count()가 이상해용
작성자
황병득(hbdms)
작성일
2008-09-10 16:40
조회수
5,458

저는 사용자 정의 함수를 작성 중 입니다..  일단 사용자 정의 함수를 보면서 설명 드리겠씁니다.  

 

set ANSI_NULLS ONset QUOTED_IDENTIFIER ON

go

 

ALTER FUNCTION [dbo].[saleDay]

(    

      @date varchar(50)

)

RETURNS @TempCal TABLE

(     

     OncOneSale bigint NOT NULL,  

     OncOneSum bigint NOT NULL

)

AS

BEGIN  

     DECLARE @OncOneSale int;  

     DECLARE @OncOneSum int;   

    

     SELECT @OncOneSale = COUNT(ONCENTLEV_LEVGATE)  FROM ONCENTLEV   

                     WHERE ONCENTLEV_LEVDATE BETWEEN @date +' 00:00:00' AND @date + ' 23:59:59' 

                               AND ONCENTLEV_LEVGATE = 'MainOncLevGate'  AND ONCENTLEV_SALETYPE = 1 

                              AND ONCENTLEV_SALEFEE <> 0  AND ONCENTLEV_LEVFEE <> 0;

     SELECT  @OncOneSum = SUM(ONCENTLEV_TOTALFEE) FROM ONCENTLEV     

                      WHERE ONCENTLEV_LEVDATE BETWEEN @date + ' 00:00:00'

                              AND @date+ ' 23:59:59' AND ONCENTLEV_LEVGATE = 'MainOncLevGate' AND

                             ONCENTLEV_SALETYPE = 1  AND ONCENTLEV_SALEFEE <> 0 AND ONCENTLEV_TOTALFEE <> 0;  

 

              IF @OncOneSale IS NULL SET @OncOneSale = 0; 

              IF @OncOneSum IS NULL SET @OncOneSum = 0; 

 

             INSERT INTO @TempCal( OncOneSale, OncOneSum) values( @OncOneSale ,  @OncOneSum );   

 

RETURNEND

go

 

use parking

go

select * from saleDay('2008-07-21')

go

 

이렇게 함수를 실행시켰더니, 0이란 숫자 밖에 값이 안 나오내용..^^

         SELECT COUNT(ONCENTLEV_LEVGATE)  FROM ONCENTLEV  WHERE ONCENTLEV_LEVDATE BETWEEN '2008-  

                  07-21 00:00:00' AND '2008-07-21 23:59:59' AND ONCENTLEV_LEVGATE = 'MainOncLevGate' and

                  ONCENTLEV_SALETYPE = 1  AND ONCENTLEV_SALEFEE <> 0 AND ONCENTLEV_LEVFEE <> 0;  

 

          SELECT  SUM(ONCENTLEV_TOTALFEE) FROM ONCENTLEV  WHERE ONCENTLEV_LEVDATE BETWEEN '2008-

                07-21 00:00:00' AND '2008-07-21 23:59:59'  AND ONCENTLEV_LEVGATE = 'MainOncLevGate' AND 

                 ONCENTLEV_SALETYPE = 1 AND ONCENTLEV_SALEFEE <> 0 AND ONCENTLEV_TOTALFEE <> 0;

 

두 쿼리를 실핼시킬때는 값이 나오는 함수내에서의 두 select구문은 0이라는 값이 나오는 이유를 모르겠습니다.혹시  아시는  

           분은 답변좀 갈켜주세용..^^

[Top]
No.
제목
작성자
작성일
조회
4443조회조건을 모두 row로 보고 싶은 경우? [1]
도옹
2008-09-12
4941
4442[ 질문 ] ms sql 2005 백업방법(전체 DB 백업후 HDD 포멧 후 복구 방법) [2]
김찬수
2008-09-11
7367
4441여러테이블의 값을 join해서 하나의 칼럼으로 만들고 싶습니다. [1]
이상재
2008-09-11
5723
4440sum()과 count()가 이상해용
황병득
2008-09-10
5458
4438눕혀서 출력해야하는데 어려워요. [2]
이상철
2008-09-09
6271
44370시 부터 24시의 쿼리 [1]
궁금이
2008-09-08
6187
4436Data truncation 오류가 나는대 안나게 할 수 없나요? [4]
syb
2008-09-05
10548
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다