分享人:陳孚楠
1. PD中建文件夾述么,若生成在原來(lái)文件夾中,會(huì)導(dǎo)致文件重復(fù)
方法:
- 建新的文件夾度秘,再加入進(jìn)入
- 若缺少Tid、Updatetid,可把Modeltable.cs和ModeltableUser.cs兩個(gè)基類文件復(fù)制到新文件夾中
2. 數(shù)據(jù)導(dǎo)出成Excel剑梳,枚舉出錯(cuò),可以用case……then
補(bǔ)充: SQL中CASE關(guān)鍵字的使用
CASE的使用方法
代碼示例
CASE關(guān)鍵字有兩種使用方法阻荒,分別是‘簡(jiǎn)單case函數(shù)’和‘case搜索函數(shù)’
- 簡(jiǎn)單case函數(shù)
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
- case搜索函數(shù)
CASE sex
WHEN sex='1' THEN '男'
WHEN sex='2' THEN '女'
ELSE '其他' END
分析說(shuō)明
-
簡(jiǎn)單case函數(shù)是case搜索函數(shù)的真子集
- 簡(jiǎn)單case函數(shù)的使用方法與一些高級(jí)語(yǔ)言(如:java)中的switch語(yǔ)句相似:CASE給定匹配字段,WHEN給出具體的字段值,如果匹配到后返回THEN值。
- 簡(jiǎn)單case函數(shù)其實(shí)就是case搜索函數(shù)的‘=’邏輯的實(shí)現(xiàn)羊壹。case搜索函數(shù)可以實(shí)現(xiàn)簡(jiǎn)單case函數(shù)的所有功能,而簡(jiǎn)單case函數(shù)卻不可實(shí)現(xiàn)case搜索函數(shù)的‘=’邏輯以外的功能油猫。
-
case函數(shù)匹配原則
- case函數(shù)與switch的不同在于case僅返回第一個(gè)匹配到的結(jié)果,而switch則會(huì)在沒(méi)有中斷的情況下繼續(xù)后面的判斷情妖,將會(huì)執(zhí)行所有匹配的結(jié)果。
-
case搜索函數(shù)比簡(jiǎn)單case函數(shù)更加靈活
- case搜索函數(shù)與簡(jiǎn)單case函數(shù)相比的靈活之處在于可以在WHEN中書寫判斷式电爹。
case關(guān)鍵字的一些妙用
-
替換
在某些時(shí)候,我們需要在查詢結(jié)果中使用字符串替換掉數(shù)據(jù)庫(kù)中原本存儲(chǔ)的字符串丐箩,如:數(shù)據(jù)庫(kù)中的性別存儲(chǔ)方式是以‘1’表示‘男’、‘0’表示‘女’屎勘。如果不進(jìn)行替換,則查詢結(jié)果中只會(huì)包含‘1’和‘0’概漱,但我們希望能以‘男’和‘女’的形式進(jìn)行展示。此時(shí)我們就可以使用case語(yǔ)句來(lái)進(jìn)行實(shí)現(xiàn):
SELECT
name,
CASE gender
WHEN '1' THEN '男'
WHEN '0' THEN '女'
ELSE '其他' END
FROM
T_USER
-
分類
說(shuō)到分類瓤摧,在SQL中應(yīng)該首選GROUP BY。然而GROUP BY也不是萬(wàn)能的夜惭,如果有進(jìn)行范圍分類,就有些力不從心了诈茧,需要與CASE配合才能完成。比如:當(dāng)前用戶表(T_USER)中有100萬(wàn)條數(shù)據(jù)敢会,用戶記錄中有年齡字段(age),我們現(xiàn)在劃分年齡小于18歲的是未成年成鸥昏、大于等于18歲小于40歲的年輕人、大于等于40歲小于60歲的是中年人吏垮、大于等于60歲的是老年人罐旗,現(xiàn)需要統(tǒng)計(jì)各類人群的數(shù)量。
SELECT
CASE age
WHERE age < 18 THEN '未成年人'
WHERE age >= 18 AND age < 40 THEN '年輕人'
WEHRE age >= 40 AND age < 60 THEN '中年人'
WHERE age >= 60 THEN '老年人'
ELSE '其他' END '人群類型',
COUNT(*) '數(shù)量'
FROM T_USER
GROUP BY
CASE age
WHERE age < 18 THEN '未成年人'
WHERE age >= 18 AND age < 40 THEN '年輕人'
WEHRE age >= 40 AND age < 60 THEN '中年人'
WHERE age >= 60 THEN '老年人'
ELSE '其他' END
-
降維
這里的降維主要是降低數(shù)據(jù)庫(kù)查詢次數(shù)九秀,我們可以將數(shù)據(jù)庫(kù)的每個(gè)select作為數(shù)據(jù)的一個(gè)維度粘我,維度越高,數(shù)據(jù)庫(kù)服務(wù)器處理該數(shù)據(jù)的資源消耗就越多征字,子查詢就是一個(gè)極度消耗資源的查詢方式。這里就給出一個(gè)減少子查詢的案例匙姜,如:同樣是“分類”欄目下的那個(gè)表(T_USER),人群分類相同搁料,另外說(shuō)明:用戶表中的用戶來(lái)自于國(guó)內(nèi)的不同省(province)。現(xiàn)在需要統(tǒng)計(jì)的是郭计,各省的各類人群的數(shù)量。
SELECT province,
SUM( CASE age WHERE age < 18 THEN 1 ELSE 0 END) '未成年人',
SUM( CASE age WHERE age >= 18 AND age < 40 THEN 1 ELSE 0 END) '年輕人',
SUM( CASE age WHERE age >= 40 AND age < 60 THEN 1 ELSE 0 END) '中年人',
SUM( CASE age WHERE age >= 60 THEN 1 ELSE 0 END) '老年人',
FROM T_USER
GROUP BY
province
3. 統(tǒng)計(jì)方法:Group-Concat 函數(shù)
實(shí)例:
rcv.SelectFrom = @"(SELECT r.Year_Require,
GROUP_CONCAT(r.`Tid` SEPARATOR ',')AS RequirementTids,c.CourseName,
SUM(r.Mans)AS Mans,
SUM(r.Tuition)AS Tuition,SUM(r.TrafficExpense)AS TrafficExpense,
SUM(r.AccommodationFee)AS AccommodationFee,
SUM(r.Fees)AS Fees,
GROUP_CONCAT(r.`Month_Require` SEPARATOR ',')AS Month_Require,
GROUP_CONCAT(r.`TrainSite` SEPARATOR ',')AS TrainSite,
r.ApproveMans,m.CourseTypeName,c.CourseCode
FROM T_Hr_Tr_Requirement r,T_Course c,T_CourseTypeManage m
WHERE r.CourseTid = c.Tid AND c.CourseSortTid=m.Tid
AND r.Status = 1 AND c.Status = 1
AND m.Status = 1 AND r.RequireStatus = 55
GROUP BY r.Year_Require,r.CourseCode)T";
補(bǔ)充:group_concat()函數(shù)總結(jié)