0

this を提供する計算列式が必要ですyyMMdd##

ID 列 ( DataID) と日付列 ( DataDate) があります。

これは私がこれまでに持っているものです。

(((right(CONVERT([varchar](4),datepart(year,[DataDate]),0),(2))+
right(CONVERT([varchar](4),datepart(month,[DataDate]),0),(2)))+
right(CONVERT([varchar](4),datepart(day,[DataDate]),0),(2)))+
right('00'+CONVERT([varchar](2),[DataID],0),(2)))

そして、これは私に与えます:

12111201
12111202
12111303
12111304
12111405
12111406
12111407
12111508

私が欲しいのは:

12111201
12111202
12111301
12111302
12111401
12111402
12111403
12111501
4

1 に答える 1

3

日付ごとに1から始まるシーケンスが必要だと思います-そうですかそうでない場合:本当に欲しい/必要なものを説明してください。

IDENTITY列と計算列の指定では、これを行うことはできません。IDENTITY列は常に増加する数値を返します。

できることは、これらの値をディスクに保存するのではなく、代わりに CTE とROW_NUMBER() OVER (PARTITION BY....)構造体を使用してその場でこれらの数値を作成することです - それらを選択する必要があるときはいつでも。または、そのような CTE に基づいて定期的に (たとえば、1 時間に 1 回程度) これらの値を設定するジョブを用意します。

そのCTEは次のように見えるかもしれません-再び、それが実際にタイプであると仮定します(そうではないか、またはそのようなものではありません):DataDateDATEDATETIME

;WITH CTE AS
(
    SELECT 
       DataID, DataDate,
       RowNum = ROW_NUMBER() OVER (PARTITION BY DataDate ORDER BY DataID)
    FROM
       dbo.YourTable
)
SELECT 
    DataID, DataDate, RowNum
FROM
    CTE
于 2012-11-14T18:16:09.787 に答える