首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

T-SQL 使用者定義函數:依出生日期計算星座

     編輯:關於SqlServer

建立純 T-SQL 純量函數 GetStar(@dt datetime),內含 12 星座起始月日常數表,利用 DATEADD 計算當年各星座起始日期,再找出小於等於輸入日期的最大起始日期對應星座。單一 SELECT 完成,無需程序邏輯。附測試查詢統計員工星座分布。

函數完整碼

CREATE FUNCTION GetStar(@dt DATETIME)
RETURNS VARCHAR(100)
AS BEGIN
    RETURN (
        SELECT MAX(star) FROM (
            SELECT '魔羯座' star, 1 [month], 1 [day] UNION ALL
            SELECT '水瓶座', 1, 20 UNION ALL
            SELECT '雙魚座', 2, 19 UNION ALL
            SELECT '牧羊座', 3, 21 UNION ALL
            SELECT '金牛座', 4, 20 UNION ALL
            SELECT '雙子座', 5, 21 UNION ALL
            SELECT '巨蟹座', 6, 22 UNION ALL
            SELECT '獅子座', 7, 23 UNION ALL
            SELECT '處女座', 8, 23 UNION ALL
            SELECT '天秤座', 9, 23 UNION ALL
            SELECT '天蠍座', 10, 24 UNION ALL
            SELECT '射手座', 11, 22 UNION ALL
            SELECT '魔羯座', 12, 22
        ) stars
        WHERE @dt >= DATEADD(day, [day]-1, DATEADD(month, [month]-1, DATEADD(year, DATEDIFF(year, 0, @dt), 0)))
    );
END;

測試

SELECT dbo.GetStar(birthdate) AS 星座, COUNT(*) AS 人數
FROM employees
GROUP BY dbo.GetStar(birthdate);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved