一个关于SQL语句的菜鸟问题

lakehubo 2006-06-29 09:52:57
俺是做HIS 的 俺想做一个统计药房 发西药中成药的报表
为了区分药品的中成药&西药 就得关联价表 在关联价表的时候会出现条件的不唯一性
因为在价表中关于一条药品的价格可能有多条记录(就是有的药品换了厂家 或者调价,就产生一条新 的价格记录,原来的记录坐上停价标志)
下面是我的SQL
SELECT
'住院药房' DEPT,
SUM(COSTS),
SUM(WESTDRUG) WEST,
SUM(CHMDRUG) CHINE,
SUM(SELFDRUG) SELF
FROM
(
SELECT //医嘱摆药
SUM(DRUG_DISPENSE_REC.COSTS) COSTS,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A01',DRUG_DISPENSE_REC.COSTS,0)),2) WESTDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A02',DRUG_DISPENSE_REC.COSTS,0)),2) CHMDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A04',DRUG_DISPENSE_REC.COSTS,0)),2) SELFDRUG
FROM
DRUG_PRICE_LIST,
DRUG_DISPENSE_REC
WHERE
DRUG_PRICE_LIST.DRUG_CODE = DRUG_DISPENSE_REC.DRUG_CODE AND
DRUG_PRICE_LIST.DRUG_SPEC = DRUG_DISPENSE_REC.DRUG_SPEC AND
DRUG_PRICE_LIST.UNITS = DRUG_DISPENSE_REC.DRUG_UNITS AND
DRUG_PRICE_LIST.FIRM_ID = DRUG_DISPENSE_REC.FIRM_ID AND
DRUG_DISPENSE_REC.DISPENSARY = '5010' AND
DRUG_PRICE_LIST.STOP_DATE IS NULL AND //就是这里 !!!!!
TO_CHAR(DRUG_DISPENSE_REC.DISPENSING_DATE_TIME,'YYYYMMDD')>='20060526' AND
TO_CHAR(DRUG_DISPENSE_REC.DISPENSING_DATE_TIME,'YYYYMMDD')<='20060625'
UNION ALL
SELECT //处方摆药
SUM(DRUG_PRESC_DETAIL.COSTS) COSTS,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A01',DRUG_PRESC_DETAIL.COSTS,0)),2) WESTDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A02',DRUG_PRESC_DETAIL.COSTS,0)),2) CHMDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A04',DRUG_PRESC_DETAIL.COSTS,0)),2) SELFDRUG
FROM
DRUG_PRESC_MASTER,
DRUG_PRESC_DETAIL,
DRUG_PRICE_LIST
WHERE
DRUG_PRESC_MASTER.PRESC_NO = DRUG_PRESC_DETAIL.PRESC_NO AND
DRUG_PRESC_MASTER.PRESC_DATE = DRUG_PRESC_DETAIL.PRESC_DATE AND
DRUG_PRESC_MASTER.PRESC_SOURCE = '1' AND
DRUG_PRESC_MASTER.DISPENSARY = '5010' AND
DRUG_PRICE_LIST.STOP_DATE IS NULL AND //还有这里!!!
DRUG_PRESC_DETAIL.DRUG_CODE = DRUG_PRICE_LIST.DRUG_CODE AND
DRUG_PRESC_DETAIL.PACKAGE_UNITS = DRUG_PRICE_LIST.UNITS AND
DRUG_PRESC_DETAIL.FIRM_ID = DRUG_PRICE_LIST.FIRM_ID AND
DRUG_PRESC_DETAIL.PACKAGE_SPEC = DRUG_PRICE_LIST.DRUG_SPEC AND
TO_CHAR(DRUG_PRESC_MASTER.DISPENSING_DATETIME,'YYYYMMDD')>='20060526' AND
TO_CHAR(DRUG_PRESC_MASTER.DISPENSING_DATETIME,'YYYYMMDD')<='20060625'
UNION ALL
SELECT //药品出库
SUM(DRUG_EXPORT_DETAIL.RETAIL_PRICE * DRUG_EXPORT_DETAIL.QUANTITY) COSTS,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A01',DRUG_EXPORT_DETAIL.RETAIL_PRICE * DRUG_EXPORT_DETAIL.QUANTITY,0)),2) WESTDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A02',DRUG_EXPORT_DETAIL.RETAIL_PRICE * DRUG_EXPORT_DETAIL.QUANTITY,0)),2) CHMDRUG,
ROUND(SUM(DECODE(DRUG_PRICE_LIST.CLASS_ON_RECKONING,'A04',DRUG_EXPORT_DETAIL.RETAIL_PRICE * DRUG_EXPORT_DETAIL.QUANTITY,0)),2) SELFDRUG
FROM
DRUG_EXPORT_MASTER ,
DRUG_EXPORT_DETAIL,
DRUG_PRICE_LIST
WHERE
DRUG_EXPORT_MASTER.DOCUMENT_NO = DRUG_EXPORT_DETAIL.DOCUMENT_NO AND
DRUG_EXPORT_MASTER.STORAGE = '5010' AND
DRUG_PRICE_LIST.STOP_DATE IS NULL AND //这里
DRUG_EXPORT_DETAIL.DRUG_CODE = DRUG_PRICE_LIST.DRUG_CODE AND
DRUG_EXPORT_DETAIL.DRUG_SPEC = DRUG_PRICE_LIST.DRUG_SPEC AND
DRUG_EXPORT_DETAIL.UNITS = DRUG_PRICE_LIST.UNITS AND
DRUG_EXPORT_DETAIL.FIRM_ID = DRUG_PRICE_LIST.FIRM_ID AND
TO_CHAR(DRUG_EXPORT_MASTER.EXPORT_DATE,'YYYYMMDD')<='20060625' AND
TO_CHAR(DRUG_EXPORT_MASTER.EXPORT_DATE,'YYYYMMDD')>='20060526' AND
DRUG_EXPORT_MASTER.RECEIVER NOT LIKE '住院药房'
);
我现在用的方法是 取 停价日期为空的那一条 不过不能保证价表中去到的药&药房发的药是同一厂家
(存在药品换厂家的可能)
我现在想的一个办法就是 取 价表中 价格开始时间(START_DATE) 为价表中记录的药品&药房发药所记录的同一药品同一厂家中的价表中的所有记录的最大值,
哪位大虾指点一下啊
感激不尽!!
...全文
241 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
今天路过又看了一下 原来只有一句SELECT语句呀 真佩服楼主 能写这样的东东 看来是诚心让别人看不懂的 估计过了一两个月楼主自己都不明白了
bapi 2006-07-08
  • 打赏
  • 举报
回复
汗~~你们没有做设计的么?没有做代码抽查的么?这样的东东怎么能拿到实际项目中用呢?

先不说SQL的效率问题,就可读性来说就通不过,估计没个几十分钟我整不明白楼主到底想干什么。。。建议你还是分开来一句句写清楚,写个procedure也比看这容易啊~~
ZAG369 2006-07-08
  • 打赏
  • 举报
回复
一个字 :晕。。。。。。。
lakehubo 2006-07-02
  • 打赏
  • 举报
回复
帮忙指点一下哦
自己先顶起来
  • 打赏
  • 举报
回复
这么长 高人也会看晕 别说菜鸟
lakehubo 2006-06-30
  • 打赏
  • 举报
回复
只是要取 的数据多了一点 ,呵呵
看下面的说明就可以了
高手帮忙指点一下 哦 ..谢谢啦
lyq_lawrance 2006-06-30
  • 打赏
  • 举报
回复
一个字,迷糊~~~~

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧