这个SQL把我难住了,高手们进来看一下,统计和字符串处理的问题。。
有这样几个表:
档位表:
MarketID BoothID BoothType
440308005021 1 猪肉
440308005021 2 猪肉
440308005021 3 猪肉
440308005021 4 猪肉
440308005021 5 猪肉
440308005021 6 猪肉
票据表:
MarketUID BoothID BillNo Date
440308005021 1 AACB39494040 2006-01-01
440308005021 2 AACR39494040 2006-01-01
440308005021 4 AACC39445640 2006-01-01
预警表:
MarketUID BoothUID Date FeedBack
440308005021 3 2006-01-01 有票,编码是AACB39494040.
440308005021 6 2006-01-01 停业.
====================================================
现在要求统计出这样的效果:
MarketUID BoothUID Date BillNo FeedBack IsExisted
主要有这几个要点:
1.统计全年440308005021市场所有猪肉档的票据和预警情况;
2.根据档位在票据表中查找,如果当天有票,则在结果集中BillNo字段列出BillNo,
如果在票据表中找不到,则在预警表中找,如果找到就在结果集feedback中显示;
都找不到,就显示空;
3.如果预警中有记录,从feedback中提出票据编码,再在票据表中查询,如果存在此票,在isexisted字段显示true,否则显示false;
==================================================
第三个问题不太好弄啊。
------解决方案--------------------試下
substring(C.FeedBack, patindex( '%[0-9A-z]% ',C.FeedBack),len(C.FeedBack)-patindex( '%[0-9A-z]% ',C.FeedBack))
exg:
--假設以句號 '. '結尾,並且緊跟票據
--如果不是,只要reverse(@s),然後找出來第一個數字或字母,再計算
declare @s varchar(100)
set @s= '我是,票據是ADSF88888832. '
select substring(@s, patindex( '%[0-9A-z]% ',@s),len(@s)-patindex( '%[0-9A-z]% ',@s))
/*
----------------