SQL Server: генерировать разные значения для каждой строки вывода - PullRequest
0 голосов
/ 21 марта 2019

Я выполняю запрос, в котором мне нужно, чтобы SCORE имел разные выходные данные для каждой строки.Я могу сделать это за выполнение, но мне не повезло с RAND, так как я получаю преобразование из varchar в int с ошибкой.Мне нужно номер переменной для выполнения в диапазоне без десятичных знаков.Есть какой-либо способ сделать это?Любая помощь приветствуется.

SELECT
    'Row_Number^FEED_date^database_id^station_id^Form_Type^FBCS_CLAIM_ID^FBCS_LINE_ID^Pay^SCORE^score_date^reason_code^reason_description'
UNION ALL
SELECT
    CAST(ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS VARCHAR(20))  + '^' + 
          CONVERT(VARCHAR, getdate(), 112)+ '^' +  
          'FBCSTrans'+ '^' +  ---took off the 1 so if problems put it back
          stationnumber+ '^' +  
          case when claimtype = 0 then 'HCFA 1500' else 'UB 1450' end+ '^' + 
          CAST(Claims.claimid AS VARCHAR(50)) + '^' + 
          CAST(LineID AS VARCHAR(50)) + '^' + 
          'Y'+ '^' + 
          **RAND() * 100000 AS random_number** + '^' + 
          CONVERT(VARCHAR, getdate(), 112)+ '^' + 
          '' + '^' + ''
FROM 
    Claims 
JOIN 
    ClaimLines ON Claims.Claimid = Claimlines.Claimid 
JOIN 
    Facilities ON Claims.FacilityID = Facilities.FacilityID
WHERE  
    Claims.ClaimId IN (SELECT TOP(100000) ClaimId 
                       FROM CLAIMS 
                       WHERE Claims.RecordStatus = 55 AND facilityid = 40)

1 Ответ

0 голосов
/ 21 марта 2019
    USE [DATABASE NAME]

SELECT 'Row_Number^FEED_date^database_id^station_id^Form_Type^FBCS_CLAIM_ID^FBCS_LINE_ID^Pay^SCORE^score_date^reason_code^reason_description'
UNION ALL
SELECT
CAST(ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS VARCHAR(20))  + '^' + 
          CONVERT(VARCHAR, getdate(), 112)+ '^' +  
          'DATABASE NAME'+ '^' +  ---took off the 1 so if problems put it back
          stationnumber+ '^' +  
          case when claimtype = 0 then 'HCFA 1500' else 'UB 1450' end+ '^' + 
          CAST(Claims.claimid AS VARCHAR(50)) + '^' + 
          CAST(LineID AS VARCHAR(50)) + '^' + 
          'Y'+ '^' + 
          CAST (FLOOR(RAND(CHECKSUM(NEWID()))*(1000-0+1)+100) As NVARCHAR) + '^' + 
          CONVERT(VARCHAR, getdate(), 112)+ '^' + 
          '' + '^' + ''
FROM Claims 
        JOIN ClaimLines on Claims.Claimid = Claimlines.Claimid 
        JOIN Facilities ON Claims.FacilityID = Facilities.FacilityID
WHERE  Claims.ClaimId IN (SELECT TOP(100000)ClaimId FROM CLAIMS WHERE Claims.RecordStatus = 55 and facilityid=40)
...