Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理SQL数据问题的最佳方法_Sql_Sql Server_Database_Database Design_Stored Procedures - Fatal编程技术网

处理SQL数据问题的最佳方法

处理SQL数据问题的最佳方法,sql,sql-server,database,database-design,stored-procedures,Sql,Sql Server,Database,Database Design,Stored Procedures,我有一个数据密集型的问题,需要大量的信息处理和数据操作,我把这个问题放在那里,看看是否有人知道如何处理它 以最简单的形式。我有很多表格可以连接在一起,给我一个牙医的价格清单,以及每个程序的费用 我们有多个表,看起来像这样 Dentist | Procedure1 | Procedure2 | Procedure3 | .........| Procedure? John | 500 | 342 | 434 | .........| 843 Dave

我有一个数据密集型的问题,需要大量的信息处理和数据操作,我把这个问题放在那里,看看是否有人知道如何处理它

以最简单的形式。我有很多表格可以连接在一起,给我一个牙医的价格清单,以及每个程序的费用

我们有多个表,看起来像这样

Dentist | Procedure1 | Procedure2 | Procedure3 | .........| Procedure?
John    | 500        | 342        | 434        | .........| 843
Dave    | 343        | 434        | 322        | NULLs....|
Mary    | 500        | 342        | 434        | .........| 843
Linda   | 500        | 342        | Null       | .........| 843
牙医可以有不同的程序数量和每个程序的不同定价。但是有很多牙医都有相同的手术次数和相同的费用。在内部,我们为每个所谓的费用清单创建一个唯一的ID

就像约翰是001,戴夫是002,但玛丽是001,琳达是003 如果我必须处理这些数据一次,这并不是很糟糕,但这些费用清单是以平面文件(CSV)的形式出现的,我基本上必须将DTS升级到SQL server才能使用。他们每月都会来。每个牙医的定价可能每月都有变化,然后在内部将他们放入不同的唯一ID中

有人能解释一下如何最好地解决这个问题,这样每月处理一次就可以最有效,而不必进行大量的数据操作吗

  • 找出费用清单副本的最佳方法是什么
  • 如果牙医在下个月更改费率,我如何跟踪更新牙医的费用清单?如果Mary决定对程序2收取不同的费用,那么她将在内部拥有不同的唯一ID。我如何每月跟踪这些信息,而不必删除所有内容并重新插入
  • 我正在处理的费用清单有几百万份,有些是基于zipcodes的标准规则,有些只是独特的费用清单,这里的方法是什么
  • 我可以编写一些特殊的.net程序来使用它,但它包含大量数据,直接在SQL server中工作对我来说更容易

  • 任何帮助都会很好,谢谢各位。

    您可能需要取消对数据的归档以使其正常化,这样您就可以得到:

    Doctor: DoctorID, DoctorDetails...
    FeeSchedule: DoctorID, ScheduleID, EffectiveDate, OtherDetailAtThisLevel...
    FeeScheduleDetail: ScheduleID, ProcedureCode, Fee, OtherDetailAtThisLevel...
    
    当医生的数据输入时,它将被旋转,创建新的明细表,并根据未插入的数据创建明细行

    SSIS有一个unpivot组件,这很好-您可以先加载计划,然后加载详细信息。如果格式差异很大,则可能需要自定义数据源,或者只需避免SSI

    该系统将跟踪医生的新时间表。如果医生的日程安排是相同的,您可以简单地不插入它

    如果此逻辑是广泛的,则可以将数据加载到暂存表(SSI或其他)中,并在SQL中执行所有这些操作(T-SQL还具有UNPIVOT运算符)。这样做的好处在于,代码都在一个地方,并且可以在集合中执行所有操作

    关于邮政编码,如果医生不收费,这些是否与通常和习惯收费一样?这可以简单地根据医生行的邮政编码来确定。在这种情况下,您有几个选择。您可以将医生费用明细表覆盖在邮政编码费用明细表上:

    ZipCodeSchedule: ZipScheduleID, ZipCode, EffectiveDate
    ZipCodeScheduleDetail: ZipScheduleID, ProcedureCode, Fee
    

    或者,您可以将其保存在常规费用计划中(可能带有某种标志,表示它已默认为UCR)。

    不幸的是,我们为这些费用清单创建了内部唯一ID。因此,如果一名医生共享相同的费用清单,他们将拥有相同的内部唯一ID。这是一次失败的正常化尝试。但这是针对个别案例的。现在,我们有基于zipcodes的地区收费清单。现在,如果这些费用明细表发生变化,实际上无法跟踪它们,因为根据费用明细表的类型,相同的ZIP可以有不同的费用明细表。@megatoast,在这种情况下,我的zipcode明细表需要有一个唯一的ekey on zipcode、FeeType、EffectiveDate