2016-07-22 25 views
0

私はこのスクリプトを作成しました:グループ化とパイプ区切り文字(Newbee)SQL Server 2008 R2の

SELECT Distinct 
     rtrim(Insurances.EligibilityPayorNumber) as InsurancePayorCode 
    , rtrim(ContractFacilityProviders.NPI) as ProviderID 
    , rtrim(PatientInsuranceProfiles.Insurance1PolicyNumber) as SubscriberInsuranceID 
    , rtrim(PatientInsuranceProfiles.Insurance1PolicyGroupNumber) as SubscriberGroupNumber 
    , rtrim(PatientDemographics.firstname) as SubscriberFirstName 
    , rtrim(PatientDemographics.MiddleInitial) as SubscriberMiddleInitial 
    , rtrim(PatientDemographics.Lastname) as SubscriberLastName 
    , rtrim(PatientDemographics.sex) as Gender 
    , rtrim(PatientDemographics.DateofBirth) as DOB 
    , ScheduleEntry.ScheduleDate as DateofService 
    , PatientDemographics.AccountNumber as TrackingID 
FROM ScheduleEntry 
LEFT JOIN PatientDemographics 
    ON ScheduleEntry.PatientAccount = PatientDemographics.AccountNumber 
LEFT JOIN Reasons 
    ON ScheduleEntry.ReasonCode = Reasons.ReasonCode 
LEFT JOIN Providers 
    ON ScheduleEntry.ResourceCode = Providers.MedStarProviderIdentifier 
LEFT JOIN Facilities 
    ON ScheduleEntry.FacilityCode = Facilities.MedStarFacilityIdentifier 
LEFT JOIN [john-pc\sqlexpress].[Global].[dbo].[PatientStatuses] TAB2 
    on ScheduleEntry.PatientStatus = TAB2.PatientStatusCode 
LEFT JOIN AddedResource 
    ON ScheduleEntry.ResourceCode = AddedResource.AddedResourceCode 
LEFT JOIN Caregiver 
    ON ScheduleEntry.ResourceCode = Caregiver.CaregiverCode 
LEFT JOIN ReasonScripts 
    ON ScheduleEntry.ReasonCode = ReasonScripts.Reasoncode 
LEFT JOIN Scripts 
    on Reasonscripts.Scriptcode = Scripts.ScriptCode 
LEFT JOIN PatientInsuranceProfiles 
    ON ScheduleEntry.PatientAccount = PatientInsuranceProfiles.PatientAccountNumber 
LEFT JOIN Insurances 
    ON PatientInsuranceProfiles.Insurance1Mnemonic = Insurances.Mnemonic 
LEFT JOIN ContractFacilityProviders 
    ON PatientDemographics.PrimaryPhysician = ContractFacilityProviders.ProviderIdentifier 
WHERE ScheduleEntry.ScheduleDate >= getdate() 
    and ScheduleEntry.ScheduleDate <= getDate() +1 
    and PatientinsuranceProfiles.ActiveFlag = 1 
    and EligibilityPayorNumber > = 1 
ORDER By SCHEDULEDATE 

私はいくつかのことをしたいと思っ及び方法を見つけ出すことはできません。

  1. DOB ofはNov 6 1939 12:00AMの値を返しており、mmddyyyyである必要があります。
  2. 私はTrackingIDでグループ化する必要があります。複数の行で同じにすることができます。データは常に同じです。
  3. スクリプトに何を追加すればよいですか?SQLとして実行すると、区切り文字として保存されますか?
+0

「DOB」列のデータ型、Datetimeでない場合はdatetime値が保存される形式は? –

+0

3) - 'for xml path( '') ' –

+0

DateOfBirthの日付は、日付/時刻フィールドであると仮定して' REPLACE(CONVERT(VARCHAR、PatientDemographics.DateofBirth、101)、'/'、' ') AS DOB 'と呼ばれる。パイプとしての節約としては、私が知っているネイティブな方法はありません。これはSQLで行います。それぞれのフィールドに '+ '|''を追加することはできますが、それでもエクスポートする必要があります。 Powershell Export-Csvコマンドレットを使用して区切り記号をパイプに置き換えるか、SQLデータツールを使用してSSISパッケージを作成します。 PowershellとData Toolsの両方とも、それぞれの環境からSQLネイティブを実行できます。 –

答えて

0

DOBの場合、これはSELECTで使用できます。これはタイプVARCHARであり、もはやdatetimeではないことに注意してください。

SELECT REPLACE(CONVERT(VARCHAR(10),PatientDemographics.DateofBirth,101),'/','') AS DOB 

私はあなたのRTRIMに気づくと、彼らはあなたの出力のために必要かもしれないが、これは単にcomparisionsためのSQLサーバおよび末尾のスペースにいくつかの自由な知識である:ある何

https://support.microsoft.com/en-us/kb/316626

DECLARE @s1 varchar(10) 
DECLARE @s2 varchar(10) 

set @s1 = 'nospace' 
set @s2 = '3spaces ' 

select len(@s1), len(@s2)