Declare procursor CURSOR FOR
SELECT CLAIMNO from RPT_CLAIM_MD_COMBO
DECLARE @myyear Integer
Declare @provar varchar(22)
open procursor
fetch next from procursor into @provar
WHILE(@@FETCH_STATUS = 0)
BEGIN
SET @myyear = (SELECT
CASE
WHEN CONVERT(INTEGER,BTHDAT) = 0 THEN 0 //if the birthdate is 0
WHEN datepart(DY,convert(date, BTHDAT)) > datepart(DY,'2015/07/01') THEN DATEDIFF(YEAR, convert(date, BTHDAT),'2015/07/01') - 1 //DY of a persons date is greater than 2015/01/01 then subtract the year by one
ELSE DATEDIFF(YEAR,convert(date, BTHDAT),'2015/07/01')
END
from RPT_CLAIM_MD_COMBO WHERE CLAIMNO = @provar)
SELECT SERVICE_GROUP, SERVICE_CATEGORY,
CASE
WHEN @myyear - 2015 <= 0 AND @myyear - 2015 >= 5 THEN 'Early Child'
WHEN @myyear - 2015 <= 6 AND @myyear - 2015 >= 12 THEN 'Child'
WHEN @myyear - 2015 <= 13 AND @myyear - 2015 >= 17 THEN 'Adolescent'
WHEN @myyear - 2015 <= 18 AND @myyear - 2015 >= 21 THEN 'Transitional'
WHEN @myyear - 2015 <= 22 AND @myyear - 2015 >= 64 THEN 'Adult'
WHEN @myyear - 2015 >= 65 THEN 'Geriatric'
ELSE '0'
END AS Age_desc,
SUM(CONVERT(MONEY, TOPAY)) AS PAID_AMT
FROM RPT_CLAIM_MD_COMBO
WHERE SERVICE_FY = '2016' and DISTYP = 'P' AND CLAIMNO = @provar
GROUP BY
SERVICE_GROUP,SERVICE_CATEGORY,
CASE
WHEN @myyear - 2015 <= 0 AND @myyear - 2015 >= 5 THEN 'Early Child'
WHEN @myyear - 2015 <= 6 AND @myyear - 2015 >= 12 THEN 'Child'
WHEN @myyear - 2015 <= 13 AND @myyear - 2015 >= 17 THEN 'Adolescent'
WHEN @myyear - 2015 <= 18 AND @myyear - 2015 >= 21 THEN 'Transitional'
WHEN @myyear - 2015 <= 22 AND @myyear - 2015 >= 64 THEN 'Adult'
WHEN @myyear - 2015 >= 65 THEN 'Geriatric'
ELSE '0'
END
fetch next from procursor into @provar
END
CLOSE procursor
これは私のコードです。これを実行すると、次のエラーが発生します。 メッセージ329、レベル16、状態1、行21 各GROUP BY式には、少なくとも1つの列参照が含まれている必要があります。メッセージ329、レベル16、状態1、行21各GROUP BY式には少なくとも1つの列参照が含まれている必要があります
また、MS SQLサーバーで%rowtypeを使用することもできます。 は、誰かが
だから[adkedこの質問](https://stackoverflow.com/questions/44655470/ms-sql-server-assigning-a-date-to-a-variable)と何も言いませんでした新しいエラーが発生しました。そのポストの最初の質問を詳しく説明すると、そのカーソルが最後に割り当てを解除する必要があります。そして// SSMS/SQL Serverで何かコメントアウトする方法ではなく、%rowtypeはORACLEです - row_number()は似ていますが、あまりにも曖昧です。 – scsimon
@scsimonなぜですか?新しいSOの投稿を作成してユーザーに推測させるのは簡単です。それは20の質問をするようなものです! –
ここでカーソルを使用していますか?ここに固定される必要があるので、多くのことが起こっています.... –